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 型の格納値には影響しません。
使用例
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 |
+---------------------------------------------------+