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

PHPとMySQLでタイムゾーンの問題がある

    ここでの秘訣は、date_last_activeの列タイプを知ることです。 は。 TIMESTAMPについては十分な経験があります およびDATETIME 一方がMySQLのtime_zoneセッション変数を変換(および尊重)することを知るために、もう一方は変換しません。

    mysql> SET SESSION time_zone = 'America/New_York';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> create table timetest ( dt datetime NULL, ts timestamp NOT NULL DEFAULT 0 );
    Query OK, 0 rows affected (0.06 sec)
    
    mysql> INSERT INTO timetest ( dt, ts ) VALUES ( UTC_TIMESTAMP(), UTC_TIMESTAMP() );
    Query OK, 1 row affected (0.00 sec)
    
    mysql> INSERT INTO timetest ( dt, ts ) VALUES ( NOW(), NOW() );
    Query OK, 1 row affected (0.00 sec)
    
    mysql> SELECT * FROM timetest;
    +---------------------+---------------------+
    | dt                  | ts                  |
    +---------------------+---------------------+
    | 2009-06-27 17:53:51 | 2009-06-27 17:53:51 | 
    | 2009-06-27 13:53:54 | 2009-06-27 13:53:54 | 
    +---------------------+---------------------+
    2 rows in set (0.00 sec)
    
    mysql> set session time_zone='UTC';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SELECT * FROM timetest;
    +---------------------+---------------------+
    | dt                  | ts                  |
    +---------------------+---------------------+
    | 2009-06-27 17:53:51 | 2009-06-27 21:53:51 | 
    | 2009-06-27 13:53:54 | 2009-06-27 17:53:54 | 
    +---------------------+---------------------+
    2 rows in set (0.00 sec)
    

    だから、これが私がすることです:

    • データベースに挿入するときは、PHPおよびMySQLでUTCを使用してください。 my.cnf内 私は持っています:time_zone=UTC MySQLおよびPHPでの問題を回避するために、date_default_timezone_set('UTC')
    • UTC_TIMESTAMP()を使用します NOW()の代わりに -1つはUTCで、もう1つはローカル(セッション)タイムゾーンを使用します。上記の最初のポイントに従っている場合は、UTC_TIMESTAMP()を使用してください。
    • ユーザーに表示することを選択する場合、set time_zone=' local_time_zone ' 何かを表示する前に。
    • 表示する必要がある場合は、更新し、PHPとMySQLでの適切なタイムゾーンの変更で呼び出しを囲んでください。

    うまくいけば、これにアプローチする方法を理解するのに十分です。ご不明な点がございましたら、お気軽にお問い合わせください。



    1. データベースとスキーマの違い

    2. C#.NETアプリケーションでSQL Serverの時刻データ型を使用しますか?

    3. SQLAlchemy MySQL接続が常にスリープ状態になるのは奇妙ですか?

    4. パスワードが現在のポリシー要件を満たしていません