日付/時刻/日時の値は、指定するとMySQLに保存されます。つまりINSERT
の場合 文字列2012-04-17 12:03:23
DATETIME
に 列、それは保存される値です。内部でタイムスタンプに変換されますが、これは正確である場合とそうでない場合があります(以下を参照)が、値を再度クエリすると、同じ値が返されます。往復は透過的です。
SQL内で時間計算を行おうとすると、問題が発生する可能性があります。つまりSQLがタイムゾーンやサーバー時間を考慮に入れる必要がある操作。たとえば、NOW()
を使用します 。これらの操作のいずれについても、タイムゾーンやサーバー時間は 正しく設定してください。 タイムゾーンの問題
を参照してください。 。
それが気にならず、PHPで計算を行うだけでよい場合は、どのタイムゾーンからどのタイムゾーンに変換するかを確認するだけで済みます。その目的のために、できます すべての時間をUTCに標準化すると便利ですが、どのタイムゾーンから他のタイムゾーンに変換するかが明確である限り、任意のタイムゾーンから他のタイムゾーンへのタイムゾーン変換も同様に機能するため、必須ではありません。
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');