Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kiedy wybieramy DateTime zamiast Timestamp?

Jak powiedziałem w komentarzu, uważam, że zależy to głównie od osobistych preferencji. Moim zdaniem użycie uniksowego znacznika czasu i „starszych” interfejsów niebędących obiektami OOP nie jest sposobem na zrobienie tego w dzisiejszym świecie, na przykład nie używamy (czytaj:nie powinno być) używania INT datatype w naszej bazie danych do przechowywania dat w formacie Unix Timestamp, zamiast tego powinniśmy używać natywnego typu bazy danych, którym jest zwykle DATE lub DATETIME typ, który współpracuje z DateTime PHP obiekt (i inne języki) prawie natywnie, jeśli chodzi o standardowe konwersje.

Aby rozwinąć nieco, co rozumiem przez standardowe konwersje:Kiedy używasz MySQL i cofasz wartość do PHP, otrzymujesz ciąg daty w formacie ISO, którego DateTime klasa parsuje w swoim konstruktorze, dając Ci obiekt do natychmiastowego użycia. W przeciwieństwie do tego, aby przejść uniksową trasą znaczników czasu, musiałbyś użyć strtotime , następnie data aby uzyskać dowolny format natywnie.

Wspomniałem wcześniej o współdziałaniu naszych systemów PHP z systemami .NET. Chociaż nie ma konkretnych problemów spowodowanych użyciem znacznika czasu, po prostu nie jest to praktyczne rozwiązanie, ponieważ ponownie używamy bazy danych, która zwraca wartość DateTime, którą można wysłać bezpośrednio w dół potoku. Gdybyśmy mieli to przekonwertować na uniksowy znacznik czasu do użytku wewnętrznego w PHP, musielibyśmy to również przekonwertować z powrotem, jeśli mielibyśmy wysłaćodpowiedźlub wysłaćodpowiedźdo aplikacji .NET (albo powinienem tylko powiedzieć API w tym przypadku) jest to znacznik czasu i przekonwertuj go na końcu. Używając DateTime we wszystkich dziedzinach, łagodzi to potrzebę jakichkolwiek konwersji, a cały proces rozwoju jest łatwiejszy.

Wreszcie, aby dodać do tego wszystkiego, jak również wspomniałeś w swoim poście, możesz użyć błyszczących elementów, takich jak DateInterval , łatwiejsze podziały czasowe, łatwiejsza manipulacja i łatwiejsze formatowanie itp., gdy używasz DateTime i pokrewni zorientowani obiektowo partnerzy w przestępczości. W moich oczach to po prostu łatwiejszy proces rozwoju.

Nie wierzę, jak powiedziałem na początku, że istnieje „poprawna” odpowiedź na to pytanie, po prostu bardziej osobiste preferencje oparte na twoim własnym stylu kodowania, a powyższe komentarze odzwierciedlają moje.

  • Nie wierzę w to w żaden sposób. Zwłaszcza, gdy skrypty PHP są i tak krótko działającymi procesami.

Tak :)

Zobacz komentarze powyżej dotyczące bazy danych, nie jest "natywnym" używanie Unix Timestamp do tego celu IMO. Możesz po prostu zadzwonić ->getTimezone i zapisz to w bazie danych, a następnie użyj ->setTimezone kiedy wyciągniesz go z powrotem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wybierz ostatnie 20 zamówień rosnąco - PHP/MySQL

  2. Znajdź i zamień fragment tekstu w polu za pomocą MySQL

  3. Procedury składowane MySQL czy kod php?

  4. Jak radzić sobie z remisami, gdy wyniki rankingu w MySQL?

  5. Obsługa transakcji w silniku MyIsam