DateTime64 型にはカラム全体で共通の タイムゾーン を格納できます。これは、DateTime64 型の値がテキストフォーマットでどのように表示されるか、および文字列として指定された値 (‘2020-01-01 05:00:01.000’) がどのように parse されるかに影響します。タイムゾーン は table の行 (または result set) には格納されず、カラムのメタデータに格納されます。詳細は DateTime を参照してください。
サポートされる値の範囲: [1900-01-01 00:00:00, 2299-12-31 23:59:59.999999999]
小数点以下の桁数は 精度 パラメータによって決まります。
注: 最大値の精度は 8 です。最大精度の 9 桁 (ナノ秒) を使用する場合、サポートされる最大値は UTC で 2262-04-11 23:47:16 です。
例
DateTime64型のカラムを持つテーブルを作成し、データを挿入する:
- datetime を整数として insert すると、適切に scale された Unix Timestamp (UTC) として扱われます。
1546300800000(精度 3) は UTC の'2019-01-01 00:00:00'を表します。ただし、timestampカラムにはAsia/Istanbul(UTC+3) の timezone が指定されているため、文字列として出力すると、値は'2019-01-01 03:00:00'と表示されます。datetime を小数として insert する場合も、整数の場合と同様に扱われますが、小数点より前の値は秒までを含む Unix Timestamp として扱われ、小数点より後は 精度 として扱われます。 - 文字列値を datetime として insert すると、カラムの timezone の時刻として扱われます。
'2019-01-01 00:00:00'はAsia/Istanbultimezone の時刻として解釈され、1546290000000として保存されます。
DateTime64の値に対するフィルタリング
DateTime とは異なり、DateTime64 の値は String から自動では変換されません。
insert とは異なり、toDateTime64 関数ではすべての値が Decimal のバリアントとして扱われるため、精度は
小数点の後に指定する必要があります。
DateTime64型の値のタイムゾーンを取得する:
- タイムゾーン変換