DATETIME
説明
DATETIME(p)型は日付と時刻を格納し、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型はプライマリキー、パーティションカラム、またはバケットカラムとして使用できます。DATETIME型のフィールドは実際にDorisで8バイトを占有します。DATETIMEは実行時に年、月、日、時、分、秒、マイクロ秒で個別に格納されるため、DATETIMEカラムでのmonths_add操作はunix_timestampよりも効率的です。
他の型をDATETIMEに変換する方法、および変換時に受け入れられる入力については、Cast to 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 |
+---------------------------------------------------+