DateTime64
カレンダーの日付と日の時間として表現できる瞬間を、定義されたサブセコンドの精度で保存することを許可します。
ティックサイズ(精度):10-precision 秒。有効範囲:[ 0 : 9 ]。一般的に使用されるのは、3(ミリ秒)、6(マイクロ秒)、9(ナノ秒)です。
構文:
内部的には、1970-01-01 00:00:00 UTC からのティック数を Int64 として保存します。ティックの解像度は精度パラメータによって決まります。さらに、DateTime64
型は、列全体に対して同じタイムゾーンを保存でき、これにより DateTime64
型の値がテキスト形式でどのように表示されるか、文字列として指定された値がどのように解析されるか('2020-01-01 05:00:01.000')に影響します。タイムゾーンはテーブルの行(または結果セット)には保存されませんが、列のメタデータには保存されます。詳細は DateTime を参照してください。
サポートされている値の範囲:[1900-01-01 00:00:00, 2299-12-31 23:59:59.99999999]
注意:最大値の精度は8です。最大精度9桁(ナノ秒)が使用される場合、サポートされる最大値は 2262-04-11 23:47:16
UTC です。
例
DateTime64
型のカラムを持つテーブルを作成し、データを挿入する:
- 整数として日時を挿入する際には、適切にスケーリングされたUnix タイムスタンプ(UTC)として扱われます。
1546300800000
(精度3)は'2019-01-01 00:00:00'
UTC を表します。しかし、timestamp
カラムはAsia/Istanbul
(UTC+3)のタイムゾーンを指定しているため、文字列として出力される際には値は'2019-01-01 03:00:00'
と表示されます。小数点を持つ日時を挿入する際は、整数と同様に扱われますが、小数点前の値が秒まで含むUnix タイムスタンプとなり、小数点以下は精度として扱われます。 - 文字列値を日時として挿入する際には、カラムのタイムゾーンであるとみなされます。
'2019-01-01 00:00:00'
はAsia/Istanbul
タイムゾーンにあるとみなされ、1546290000000
として保存されます。
DateTime64
値に対するフィルタリング
DateTime
とは異なり、DateTime64
値は自動的に String
から変換されることはありません。
挿入とは逆に、toDateTime64
関数はすべての値を小数点の変種として扱うため、精度は小数点以下で指定する必要があります。
DateTime64
型の値のタイムゾーンを取得する:
- タイムゾーンの変換
参照