デフォルトの動作 - SET TIME ZONE LOCAL がデフォルトの動作で、これは SET TIME ZONE コマンドをまったく使用しないのと同じです。デフォルトの動作の場合、データベース エンジンは実行しているオペレーティング システムに基づいてそのタイム ゾーンを設定します。たとえば、SELECT
CURTIME() では現在の現地時刻を返しますが、SELECT
CURRENT_TIME() では、オペレーティング システムの地域のシステム時刻とタイム ゾーンの設定の両方に基づいて現在の世界協定時刻(UTC)を返します。
デフォルトの動作の場合、1996-03-28 や
17:40:46 などの日付/時刻のリテラル値は、現在の現地日付/時刻として解釈されます。また、挿入中には、タイムスタンプ リテラル値は指定した現在の現地時刻として解釈されます。タイムスタンプ値は常に UTC 時刻を使って調整されてから内部的に保存され、取得時に現地時刻に変換されます。詳細については、
タイムスタンプ値を参照してください。
オフセットを指定した場合の動作 有効なオフセット値が指定されると、
CURDATE()、
CURTIME()、
NOW()、または
SYSDATETIME() の値を生成する場合に、オペレーティング システムのタイム ゾーンのオフセットではなくその値を使用します。たとえば、オフセットに -02:00 を指定した場合、CURDATE() の現地時刻の値はオペレーティング システムから返される UTC 時刻に -02:00 が加算された値になります。
直接の SELECT NOW() で表示される値は、INSERT SELECT
NOW() 構文によってディスクに保存される値とは異なることに注意することが重要です。また、SELECT
CURRENT_TIMESTAMP() の表示値も、CURRENT_TIMESTAMP() の値を INSERT した後でそれを SELECT した場合(INSERT SELECT CURRENT_TIMESTAMP() 構文)に表示される値とは異なることに注意してください。これは、データ ファイルに保存したリテラル値を取得するときに値が調整されるからです。