date_trunc
指定された日付部分(年、日、時間、分など)に基づいて時間値を切り捨てます。
StarRocks は、指定された日付部分を抽出するための年、四半期、月、週、日、時間の関数も提供しています。
Syntax
DATETIME|DATE date_trunc(VARCHAR fmt, DATETIME|DATE datetime)
Parameters
-
datetime: 切り捨てる時間で、DATETIME または DATE 型である必要があります。日付と時間が存在しなければなりません。存在しない場合は、NULL が返されます。例えば、2021-02-29 11:12:13は日付として存在しないため、NULL が返されます。 -
fmt: 日付部分、つまりdatetimeがどの精度まで切り捨てられるかを指定します。値は VARCHAR 定数でなければなりません。fmtは以下の表にリストされている値に設定する必要があります。値が間違っている場合、エラーが返されます。datetimeが DATE 値の場合、fmtはyear、quarter、month、week、またはdayのみ設定できます。他の日付単位、例えばhourに設定すると、エラーが報告されます。例 8 を参照してください。
| Value | Description |
|---|---|
| microsecond | マイクロ秒まで切り捨てます (3.1.7 以降)。 |
| millisecond | ミリ秒まで切り捨てます (3.1.7 以降)。 |
| second | 秒まで切り捨てます。 |
| minute | 分まで切り捨てます。秒の部分はゼロになります。 |
| hour | 時間まで切り捨てます。分と秒の部分はゼロになります。 |
| day | 日まで切り捨てます。時間の部分はゼロになります。 |
| week | datetime が含まれる週の最初の日付まで切り捨てます。時間の部分はゼロになります。 |
| month | datetime が含まれる月の最初の日付まで切り捨てます。時間の部分はゼロになります。 |
| quarter | datetime が含まれる四半期の最初の日付まで切り捨てます。時間の部分はゼロになります。 |
| year | datetime が含まれる年の最初の日付まで切り捨てます。時間の部分はゼロになります。 |
Return value
DATETIME または DATE 型の値を返します。
datetime が DATE 型で、fmt が hour、minute、または second に設定されている場合、返される値の時間部分はデフォルトで 00:00:00 になります。
Examples
Example 1: 入力時間をマイクロ秒まで切り捨てます。
select date_trunc('microsecond', '2023-10-31 23:59:59.001002');
+---------------------------------------------------------+
| date_trunc('microsecond', '2023-10-31 23:59:59.001002') |
+---------------------------------------------------------+
| 2023-10-31 23:59:59.001002 |
+---------------------------------------------------------+
Example 2: 入力時間をミリ秒まで切り捨てます。
select date_trunc('millisecond', '2023-10-31 23:59:59.001002');
+---------------------------------------------------------+
| date_trunc('millisecond', '2023-10-31 23:59:59.001002') |
+---------------------------------------------------------+
| 2023-10-31 23:59:59.001000 |
+---------------------------------------------------------+
select date_trunc('millisecond', '2023-10-31');
+-----------------------------------------+
| date_trunc('millisecond', '2023-10-31') |
+-----------------------------------------+
| 2023-10-31 00:00:00 |
+-----------------------------------------+
Example 3: 入力時間を分まで切り捨てます。
select date_trunc('minute', '2023-11-04 23:59:59.001002');
+----------------------------------------------------+
| date_trunc('minute', '2023-11-04 23:59:59.001002') |
+----------------------------------------------------+
| 2023-11-04 23:59:00 |
+----------------------------------------------------+
Example 4: 入力時間を時間まで切り捨てます。
select date_trunc("hour", "2020-11-04 11:12:13");
+-------------------------------------------+
| date_trunc('hour', '2020-11-04 11:12:13') |
+-------------------------------------------+
| 2020-11-04 11:00:00 |
+-------------------------------------------+
Example 5: 入力時間を週の最初の日まで切り捨てます。
select date_trunc("week", "2020-11-04 11:12:13");
+-------------------------------------------+
| date_trunc('week', '2020-11-04 11:12:13') |
+-------------------------------------------+
| 2020-11-02 00:00:00 |
+-------------------------------------------+
Example 6: 入力時間を四半期の最初の日まで切り捨てます。
select date_trunc("quarter", "2020-11-04 11:12:13");
+----------------------------------------------+
| date_trunc('quarter', '2020-11-04 11:12:13') |
+----------------------------------------------+
| 2020-10-01 00:00:00 |
+----------------------------------------------+
Example 7: 入力時間を年の最初の日まで切り捨てます。
select date_trunc('year', '2023-11-04 23:59:59.001002');
+--------------------------------------------------+
| date_trunc('year', '2023-11-04 23:59:59.001002') |
+--------------------------------------------------+
| 2023-01-01 00:00:00 |
+--------------------------------------------------+
Example 8: DATE 値を時間まで切り捨てます。エラーが返されます。
select date_trunc("hour", cast("2020-11-04" as date));
ERROR 1064 (HY000): Getting analyzing error from line 1, column 26 to line 1, column 51. Detail message: date_trunc function can't support argument other than year|quarter|month|week|day.
Example 9: 入力日付を年の最初の日まで切り捨てます。
select date_trunc("month", cast("2020-11-04" as date));
+-------------------------------------------------+
| date_trunc('month', CAST('2020-11-04' AS DATE)) |
+-------------------------------------------------+
| 2020-11-01 |
+-------------------------------------------------+