sql >> Databasteknik >  >> RDS >> Mysql

PHP &MySQL:Konvertera lagrad TIMESTAMP till användarens lokala tidszon

Datum/tid/datumtid-värden lagras i MySQL när du anger dem. d.v.s. om du INSERT strängen 2012-04-17 12:03:23 till en DATETIME kolumn, det är värdet som kommer att lagras. Det kommer att konverteras internt till en tidsstämpel som kanske eller inte är korrekt (se nedan), men när du frågar efter värdet igen får du samma värde tillbaka; tur och retur är transparent.

Problem kan uppstå om du försöker göra tidsberäkningar i SQL. d.v.s. alla operationer som kräver att SQL tar tidszonen och/eller servertiden i beräkningen. Använd till exempel NOW() . För någon av dessa operationer bör tidszonen och/eller servertiden vara korrekt inställd. Se Tidszonsproblem .

Om det inte berör dig och du bara behöver göra beräkningar i PHP behöver du bara se till att du vet från vilken tidszon till vilken tidszon du vill konvertera. För det ändamålet kan vara bekvämt att standardisera alla tider till UTC, men det är inte nödvändigt, eftersom tidszonsomvandlingar från vilken tidszon till vilken annan tidszon som helst fungerar lika bra, så länge du är tydlig med vilken tidszon du konverterar från och till.

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. Heroku PostgreSQL GROUP_BY-fel i Rails-appen

  2. Doctrine 2 DQL CASE WHEN in Count

  3. Vad är skillnaden mellan backtick och hakparentes i SQL-satser?

  4. Vill du ta bort flera rader med ID?