跳到主要内容
版本:2.5

date_trunc

功能

根据指定的精度级别,将一个日期时间截断。

StarRocks 同时提供 year()quarter()month()week()day()hour() 等函数进行指定部分的提取。

语法

DATETIME date_trunc(VARCHAR fmt, DATETIME|DATE datetime)

参数说明

  • datetime: 需要截断的时间,类型为 DATETIME 或 DATE。日期和时间必须真实存在,否则返回 NULL。比如 '2021-02-29 11:12:13' 为不存在的日期,计算时会返回 NULL。

  • fmt: 精度级别,即需要将 datetime 截断到哪个时间单位。类型为 VARCHAR 常量。

    fmt 的取值必须为下表中列举的时间单位。如果取值不正确,则返回报错。

    如果 datetime 为 DATE 类型,fmt 只支持 yearquartermonthweekday,如果设置为其他粒度,会返回报错,参见示例五。

fmt 取值含义
second截断到秒。
minute截断到分钟,秒部分归零。
hour截断到小时,分钟和秒部分归零。
day截断到天,时间部分归零。
week截断到当前星期的第一天,时间部分归零。
month截断到当前月份的第一天,时间部分归零。
quarter截断到当前季度的第一天,时间部分归零。
year截断到当前年份的第一天,时间部分归零。

返回值说明

返回 DATETIME 类型的值。

示例

示例一:将输入的时间截断至分钟。

select date_trunc("minute", "2020-11-04 11:12:13");
+---------------------------------------------+
| date_trunc('minute', '2020-11-04 11:12:13') |
+---------------------------------------------+
| 2020-11-04 11:12:00 |
+---------------------------------------------+

示例二:将输入的时间截断至小时。

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 |
+-------------------------------------------+

示例三:将输入的时间截断至一周第一天。

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 |
+-------------------------------------------+

示例四:将输入的时间截断至一年第一天。

select date_trunc("year", "2020-11-04 11:12:13");
+-------------------------------------------+
| date_trunc('year', '2020-11-04 11:12:13') |
+-------------------------------------------+
| 2020-01-01 00:00:00 |
+-------------------------------------------+

示例五:DATE 类型下,fmt 设置为 hour时,返回报错。

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.