メインコンテンツまでスキップ
バージョン: 4.x

Time Zone

time_zone設定がクエリ結果、ロード、およびSHOWコマンド、システムテーブル、ツールで表示される時刻にどのような影響を与えるか。

タイムゾーンはいくつかの場所に現れますが、すべてが同じルールに従うわけではありません。ウォールクロック対インスタントという区別が、残りの部分を説明します。

ウォールクロックとインスタント

VeloDBは2種類の時刻値を扱います:

  • ウォールクロック: 2026-06-26 10:00:00のようなカレンダー表示で、ゾーンが付加されていません。DATEDATETIMEカラムがこれを格納します。書かれた通りに正確に表示され、time_zoneが変更することはありません。
  • インスタント: 時刻の絶対的なポイントで、1970-01-01 00:00:00 UTCからの秒数として格納されます。ゾーンを選択するまで時や分は持ちません。now()、ロードタイムスタンプ、ジョブ時刻はインスタントです。

ゾーンは2つの間で変換する際にのみ重要になります。同じインスタントは各ゾーンで異なるウォールクロックになります:

SET time_zone = '+00:00';     SELECT from_unixtime(1000000000); -- 2001-09-09 01:46:40
SET time_zone = 'Asia/Tokyo'; SELECT from_unixtime(1000000000); -- 2001-09-09 10:46:40

保存されたインスタントは同一です。表示される時計のみが変更されます。

タイムゾーン変数

VariableWritableWhat it does
time_zoneYesアクティブなゾーン。インスタントと壁時計時間の相互変換を行います。
system_time_zoneNo (read-only)起動時に検出された、サーバー自身のゾーンを報告します。情報提供用です。
SELECT @@time_zone;                 -- the active zone
SET time_zone = 'America/New_York'; -- this session only
SET GLOBAL time_zone = '+00:00'; -- default for future sessions

time_zonesystem_time_zoneから開始されますが、変更することができます。変更しても保存されたデータには影響しません。瞬間値の変換方法のみが変更されます。

保存されたテーブルデータ

DATEおよびDATETIME列は壁時計です。2026-06-26 10:00:00を書き込み、2026-06-26 10:00:00を読み戻します。これは任意のtime_zone下での任意のセッションで同じです。time_zoneを変更しても保存された値の書き換えや再解釈は行われません。

時間関数

これらの関数は瞬間値と壁時計の間で変換を行うため、セッションのtime_zoneを使用します。

FunctionEffect
now(), current_timestamp(), curdate()現在の瞬間値をあなたのゾーンの壁時計として表示
unix_timestamp(datetime)datetimeをあなたのゾーンの壁時計として読み取り、瞬間値を返す
from_unixtime(instant)瞬間値をあなたのゾーンの壁時計に変換
convert_tz(dt, from, to)指定した2つのゾーン間で変換。time_zoneは無視

now()はクエリごとに一度固定されるため、分散クエリではどこでも同じ値が返されます。

ロード

ほとんどのロード方法は独自のtimezoneを受け入れるため、ロードは固定ゾーン下で受信するdatetimeを解析できます。省略するとロードはセッションのtime_zoneを使用します。

Load methodHow to set it
Stream Loadtimezone HTTP header。Stream Loadを参照。
Broker Load / S3 LoadPROPERTIES内のtimezoneBroker Loadを参照。
Routine Loadjob PROPERTIES内のtimezoneRoutine Loadを参照。
MySQL Loadtimezoneプロパティ。MySQL Loadを参照。
curl --location-trusted -u <user>:<password> \
-H "timezone: America/New_York" \
-T data.csv \
http://<host>:<port>/api/<db>/<table>/_stream_load

INSERTSELECT INTO OUTFILE、および EXPORT にはロード単位のオプションがありません。まず、セッション内で time_zone を設定してください。

SHOW コマンドとシステムテーブルでの時刻

ジョブとロードのメタデータ(作成時刻、一時停止時刻など)は瞬間値です。これらは表示するまでゾーンを持たず、ゾーンはどのように読み取るかによって決まります:

  • SHOW コマンドセッションtime_zone を使用します。
  • システムテーブルとテーブル関数は(SET GLOBAL time_zoneで設定される)グローバルtime_zone を使用し、セッション値ではありません。

そのため、同じジョブの作成時刻が2つの方法で異なって見える可能性があります:

SET time_zone = 'Asia/Tokyo';

SHOW ROUTINE LOAD; -- create time in your session zone
SELECT * FROM information_schema.routine_load_jobs; -- create time in the global zone
SELECT * FROM jobs("type"="insert"); -- create time in the global zone

基本となる瞬間は同じで、表示される時刻のみが異なります。

Query audit

audit_logテーブルは他のシステムテーブルと同じルールに従います:クエリ時刻はグローバルtime_zoneを使用し、セッション値ではありません。各行の時刻は一度テキストとして書き込まれるため、既存の行は後でグローバル設定を変更しても、書き込まれた時のゾーンを保持します。

Time(ms)CpuTimeMS、および類似の列は時刻ではなく、ミリ秒単位の継続時間です。

VeloDB Console

Consoleは閲覧者のブラウザゾーンですべての時刻を表示し、時間範囲ピッカーは同じゾーンで選択を読み取ります。これにより2つの結果が生じます:

  • 同じイベントが異なる地域の閲覧者に異なる時刻として表示されます。それでも同じ瞬間です。
  • ConsoleはブラウザゾーンとSQLはtime_zoneを使用するため、Console時刻は同じ値のSQLクエリと異なることがあります。

Consoleの表示を変更するには、time_zoneではなく、ブラウザまたはOSゾーンを変更してください。

受け入れられるゾーン形式

  • 名前付きゾーン: America/New_YorkEurope/LondonAsia/Tokyo
  • 固定オフセット: +09:00-05:30+00:00
  • エイリアス: UTCGMTはUTCを意味します。CSTは米国中部ではなくAsia/Shanghai(+08:00)に解決されます;米国中部の場合はAmerica/Chicagoを使用してください。

名前付きゾーンは夏時間に従います。例えば、America/Los_Angelesは春に-08:00から-07:00にシフトし、秋に戻るため、同じ壁時計が年間を通じて異なる瞬間にマップされます。一定のオフセットを固定してDSTをオプトアウトするには、名前付きゾーンの代わりに-08:00のような固定オフセットを使用してください。

一覧表

表面使用するゾーン
格納されたDATE/DATETIMEなし(書き込まれたとおりに表示)
now()unix_timestampfrom_unixtimeセッションtime_zone
ロードロードのtimezone、なければセッションtime_zone
SHOWコマンドセッションtime_zone
システムテーブルとテーブル関数(routine_load_jobsjobs()audit_logグローバルtime_zone
VeloDB Console閲覧者のブラウザゾーン

関連項目