sql >> Database >  >> RDS >> Mysql

PHP &MySQL:Opgeslagen TIMESTAMP converteren naar de lokale tijdzone van de gebruiker

Datum/tijd/datetime-waarden worden opgeslagen in MySQL zoals u ze aanlevert. D.w.z. als je INSERT de string 2012-04-17 12:03:23 in een DATETIME kolom, dat is de waarde die wordt opgeslagen. Het wordt intern omgezet in een tijdstempel die al dan niet nauwkeurig is (zie hieronder), maar wanneer u opnieuw naar de waarde vraagt, krijgt u dezelfde waarde terug; de rondreis is transparant.

Er kunnen problemen optreden als u tijdberekeningen probeert uit te voeren in SQL. D.w.z. elke bewerking waarvoor SQL vereist is om rekening te houden met de tijdzone en/of de servertijd. Gebruik bijvoorbeeld NOW() . Voor al deze bewerkingen moet de tijdzone en/of servertijd moeten correct worden ingesteld. Zie Tijdzoneproblemen .

Als dat je niet aangaat en je hoeft alleen maar berekeningen te doen in PHP, dan hoef je alleen maar te zorgen dat je weet van welke tijdzone naar welke tijdzone je wilt converteren. Voor dat doel kan het is handig om alle tijden te standaardiseren naar UTC, maar het is niet nodig, aangezien tijdzoneconversies van elke tijdzone naar een andere tijdzone net zo goed werken, zolang u maar duidelijk weet naar welke tijdzone u converteert van en naar.

date_default_timezone_set('Asia/Tokyo'); // your reference timezone here

$date = date('Y-m-d H:i:s');

/* INSERT $date INTO database */;

$date = /* SELECT date FROM database */;

$usersTimezone = new DateTimeZone('America/Vancouver');
$l10nDate = new DateTime($date);
$l10nDate->setTimeZone($usersTimezone);
echo $l10nDate->format('Y-m-d H:i:s');


  1. Hoe tekst uit meerdere rijen samen te voegen tot een enkele tekenreeks in SQL Server

  2. Hoe MariaDB op CentOS 7 / RHEL 7 te installeren

  3. Heeft Oracle een gefilterd indexconcept?

  4. IS NOT NULL-test voor een record retourneert niet TRUE wanneer variabele is ingesteld