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

MySQLのタイムゾーンを設定するにはどうすればよいですか?

    これは役に立つかもしれないと思いました:

    MySQLでタイムゾーンが設定される可能性のある場所は3つあります。

    [mysqld]セクションのファイル「my.cnf」

    default-time-zone='+00:00'
    

    @@global.time_zone変数

    設定されている値を確認するには:

    SELECT @@global.time_zone;
    

    値を設定するには、次のいずれかを使用します。

    SET GLOBAL time_zone = '+8:00';
    SET GLOBAL time_zone = 'Europe/Helsinki';
    SET @@global.time_zone = '+00:00';
    

    (「ヨーロッパ/ヘルシンキ」などの名前付きタイムゾーンを使用するということは、タイムゾーンテーブルに適切にデータを入力する必要があることを意味します。)

    +02:00 オフセットです。 Europe/Berlin タイムゾーン(2つのオフセットがある)とCEST は特定のオフセットに対応する時刻です。

    @@session.time_zone変数

    SELECT @@session.time_zone;
    

    設定するには、次のいずれかを使用します。

    SET time_zone = 'Europe/Helsinki';
    SET time_zone = "+00:00";
    SET @@session.time_zone = "+00:00";
    

    どちらもSYSTEMを返す可能性があります。これは、my.cnfで設定されたタイムゾーンを使用することを意味します。

    タイムゾーン名を機能させるには、タイムゾーン情報テーブルにデータを入力する必要があるように設定する必要があります。 http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html 。また、この回答 でこれらのテーブルにデータを入力する方法についても説明します 。

    現在のタイムゾーンオフセットをTIMEとして取得するには

    SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP);
    

    タイムゾーンが+2:00の場合、02:00:00が返されます。

    現在のUNIXタイムスタンプを取得するには:

    SELECT UNIX_TIMESTAMP();
    SELECT UNIX_TIMESTAMP(NOW());
    

    タイムスタンプ列をUNIXタイムスタンプとして取得するには

    SELECT UNIX_TIMESTAMP(`timestamp`) FROM `table_name`
    

    UTC日時列をUNIXタイムスタンプとして取得するには

    SELECT UNIX_TIMESTAMP(CONVERT_TZ(`utc_datetime`, '+00:00', @@session.time_zone)) FROM `table_name`
    

    注:タイムゾーンを変更しても、保存されている日時やタイムスタンプは変更されません 、ただし、既存のタイムスタンプ列はUTCタイムスタンプとして内部的に保存され、現在のMySQLタイムゾーンで外部に表示されるため、異なる日時が表示されます。

    ここでチートシートを作成しました: MySQLのタイムゾーンをUTCに設定する必要がありますか?



    1. mysqlデータベースのサイズを取得する方法は?

    2. debianのpostgresから古いデータを削除するcronジョブ

    3. MySQLでどのように機能しないか

    4. SP_WhoIsActiveまたはFogLightを介してSQLデータベースを監視する| SQLServerのパフォーマンスのトラブルシューティング-1