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

Ustawienia serwera WWW i bazy danych, aby uzyskać prawidłową strefę czasową UTC

Jeśli ograniczysz się do typów MySQL DATE i DATETIME, możesz w dużej mierze zignorować problemy ze strefami czasowymi w samym MySQL. Chcesz uniknąć typu TIMESTAMP MySQL, ponieważ:

Jeśli chodzi o odczytywanie/zapisywanie wartości DATETIME, otrzymasz dokładnie to, co włożyłeś, co jest dobre.

To pozostawia Ci problem z zapewnieniem, że zawsze zapisujesz wartości UTC do bazy danych.

Najlepszym sposobem, aby upewnić się, że PHP używa UTC jest jawne ustawienie go w aplikacji przy użyciu date_default_timezone_set() . To zapewni, że wywołania takie jak date('Y-m-d H:i:s') da ci wartość UTC. Zapewni również, że coś takiego jak (new \DateTime('now'))->getTimezone() zwróci instancję UTC \DateTimeZone.

Należy oczywiście pamiętać, że sprawy stają się znacznie trudniejsze, gdy przechowujesz wartości daty/godziny, które pobierasz od użytkowników. W takich przypadkach musisz w jakiś sposób określić, w jakiej strefie czasowej znajduje się użytkownik, i obsłużyć konwersję na UTC przed utrwaleniem wartości. Zakładając, że Twoi użytkownicy mają pewne ustawienia strefy czasowej na użytkownika, zasadniczo robisz coś takiego:

/** @var \DateTimeZone $userTZ */
$userTz = getUserTimezone();
$dateTime = new \DateTime($user_submitted_date_string, $userTz);
$dateTime->setTimezone(new \DateTime('UTC'));
$dateTimeStr = $dateTime->format('Y-m-d H:i:s');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak Kupony WooCommerce są przechowywane w bazie danych?

  2. Jak określić optymalne indeksy tabel MySQL, kiedy zawartość klauzuli WHERE jest różna?

  3. CI - pokaż, co poszło nie tak

  4. Uzyskać schemat bazy danych za pomocą jednego zapytania?

  5. Przenoszenie bazy danych mysql z jednego serwera na inny