Mysql
 sql >> база данни >  >> RDS >> Mysql

Кога избрахме DateTime пред Timestamp

Както беше казано в коментар, вярвам, че това се дължи най-вече на личните предпочитания. В моите очи използването на времеви печат на Unix и „наследени“ не-OOP интерфейси не е начинът да го направим напред в днешния свят, например, ние не (четете:не трябва да бъде) използваме INT тип данни в нашата база данни, за да съхраняваме дати във формат Unix Timestamp, вместо това трябва да използваме естествения тип на базата данни, който обикновено е DATE или DATETIME тип, който си сътрудничи с DateTime на PHP обект (и други езици) почти естествено, когато става въпрос за стандартни преобразувания.

За да разясня малко какво имам предвид под стандартни преобразувания:Когато използвате MySQL и изтегляте стойност в PHP, получавате ISO-форматиран низ за дата, от който DateTime клас анализира в своя конструктор, като ви дава незабавно използваем обект. За разлика от това, за да преминете по маршрута на Unix timestamp, ще трябва да използвате strtotime , след това date за да го вкарате в какъвто и формат искате.

По-рано споменах за взаимодействието между нашите PHP системи и .NET системи. Въпреки че няма конкретни проблеми, причинени от използването на клеймо за време, това просто не е практическото решение, тъй като отново използваме база данни, която връща DateTime стойност, която може да бъде изпратена направо надолу. Ако трябваше да преобразуваме това в unix времева марка за вътрешно използване в PHP, ще трябва също да го преобразуваме обратно, ако трябва да изпратим отговор или да изпратим отговор на .NET приложението (или трябва просто да кажа API в този случай), това е клеймо за време и го преобразувайте в края. С помощта на DateTime като цяло облекчава необходимостта от каквито и да било преобразувания и целият процес на разработка е по-лесен.

И накрая, за да добавите към всичко това, както споменахте в публикацията си, можете да използвате лъскави елементи като DateInterval , по-лесно часово зониране, по-лесно манипулиране и по-лесно форматиране и т.н., когато използвате DateTime и с него са свързани обектно-ориентирани партньори в престъплението. В моите очи това е просто по-лесен процес на разработка.

Не вярвам, както казах първоначално, че има "правилен" отговор на това, просто повече от лични предпочитания, базирани на собствения ви стил на кодиране, а коментарите по-горе отразяват моите.

  • Не вярвам в това по никакъв начин. Особено с PHP скриптовете, които обикновено са толкова краткотрайни процеси.

Да :)

Вижте коментарите по-горе за базата данни, не е "родно" да се използва Unix Timestamp за тази цел IMO. Можете просто да извикате ->getTimezone и съхранете това в базата данни, след което използвайте ->setTimezone когато го издърпате отново.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате GROUP_CONCAT в CONCAT в MySQL

  2. Как да извлека микросекунди или милисекунди от текущото време на MySQL?

  3. MySQL пагинация без двойна заявка?

  4. MySQL избира максимален запис в група по

  5. PHP въпрос:Как да коригирам тези if/elseif изрази