メインコンテンツまでスキップ
に最終更新

DATETIME

説明​

DATETIME(p) 型は日付と時刻を格納します。p は精度を表し、指定できる値の範囲は [0, 6]、デフォルト値は 0 です。つまり、DATETIME は DATETIME(0) と同じです。

値の範囲は [0000-01-01 00:00:00.000..., 9999-12-31 23:59:59.999...] で、デフォルトの出力形式は 'yyyy-MM-dd HH:mm:ss.SSS...' です。小数点以下の桁数は p 桁です。たとえば、DATETIME(6) の範囲は [0000-01-01 00:00:00.000000, 9999-12-31 23:59:59.999999] です。

Doris はグレゴリオ暦の日付形式を使用し、グレゴリオ暦に存在する日付は Doris の日付と一対一に対応します。0000 は紀元前 1 年(BCE 1)を表します。日付にかかわらず、時刻の範囲は常に ['00:00:00.000...', '23:59:59.999...'] で、重複する時刻はありません。つまり、閏秒はありません。

DATETIME 型は主キー、パーティション列、またはバケット列として使用できます。Doris では、DATETIME 型のフィールドは実際には 8 バイトを占めます。実行時、DATETIME は年、月、日、時、分、秒、マイクロ秒を個別に保持するため、DATETIME 列に対する months_add 演算は unix_timestamp より効率的です。

他の型を DATETIME に変換する方法と、変換時に受け付ける入力については、DATETIME へのキャストを参照してください。

日付型と時刻型では、数学演算子を直接使った算術演算はサポートされていません。数学演算では、まず日付型または時刻型が暗黙的に数値型へ変換され、その後に演算が実行されます。時刻型の加算、減算、丸めを行う場合は、DATE_ADD、DATE_SUB、TIMESTAMPDIFF、DATE_TRUNC などの関数を使用してください。

DATETIME 型はタイムゾーンを保存しません。そのため、セッション変数 time_zone を変更しても、DATETIME 型として保存された値には影響しません。

ナノ秒精度が必要な場合は、TIMESTAMP_NS を使用してください。TIMESTAMP_NS もタイムゾーン情報を持ちませんが、サポートする範囲は 1677-09-21 から 2262-04-11 までに限られます。

例​

select cast('2020-01-02' as datetime);
+--------------------------------+
| cast('2020-01-02' as datetime) |
+--------------------------------+
| 2020-01-02 00:00:00 |
+--------------------------------+
select cast('2020-01-02' as datetime(6));
+-----------------------------------+
| cast('2020-01-02' as datetime(6)) |
+-----------------------------------+
| 2020-01-02 00:00:00.000000 |
+-----------------------------------+
select cast('0000-12-31 22:21:20.123456' as datetime(4));
+---------------------------------------------------+
| cast('0000-12-31 22:21:20.123456' as datetime(4)) |
+---------------------------------------------------+
| 0000-12-31 22:21:20.1235 |
+---------------------------------------------------+