sql >> データベース >  >> RDS >> Mysql

PHPとMySQL:保存されたタイムスタンプをユーザーのローカルタイムゾーンに変換する

    日付/時刻/日時の値は、指定すると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');
    


    1. PHPマジッククォートにもかかわらずSQLインジェクションの成功

    2. OracleでPLSQLコードをラップする方法は?

    3. mysqlデータベースをリバースエンジニアリングしてdjangoアプリを作成する

    4. ConcatのGroup_ConcatがNULL値で機能しない