sql >> Database teknologi >  >> RDS >> Mysql

PHP &MySQL:Konvertering af lagret TIMESTAMP til brugerens lokale tidszone

Dato/tid/datotidsværdier gemmes i MySQL, efterhånden som du angiver dem. dvs. hvis du INSERT strengen 2012-04-17 12:03:23 ind i en DATETIME kolonne, det er den værdi, der vil blive gemt. Det vil blive konverteret internt til et tidsstempel, som måske er nøjagtigt eller ikke (se nedenfor), men når du forespørger efter værdien igen, får du den samme værdi ud igen; rundturen er gennemsigtig.

Der kan opstå problemer, hvis du forsøger at lave tidsberegninger i SQL. dvs. enhver handling, der kræver, at SQL tager tidszonen og/eller servertiden i betragtning. For eksempel ved at bruge NOW() . For enhver af disse operationer bør tidszonen og/eller servertiden være indstillet korrekt. Se Tidszoneproblemer .

Hvis det ikke vedkommer dig, og du kun skal lave beregninger i PHP, skal du kun sikre dig, at du ved fra hvilken tidszone til hvilken tidszone du vil konvertere. Til det formål kan være praktisk at standardisere alle tider til UTC, men det er ikke nødvendigt, da tidszonekonverteringer fra enhver tidszone til enhver anden tidszone fungerer lige så godt, så længe du er klar over, hvilken tidszone du konverterer fra og til.

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. Indsæt data i flere tabeller ved hjælp af én formular

  2. Nedetid og Hotpatch-anvendelsestilstand i adop R12.2

  3. PDO Indsæt array med nøgle som kolonnenavn

  4. Er der nogen forskel mellem !=og <> i Oracle Sql?