DATE_TRUNC
功能描述
将时间戳或时间间隔截断到指定的时间单位。
语法格式
DATE_TRUNC(FIELD, SOURCE[, TIMEZONE])
参数说明
FIELD
:字符串值。表示要截断到的时间单位。SOURCE
:类型为TIMESTAMP、TIMESTAMP WITH TIME ZONE或INTERVAL的值表达式。TIMEZONE
:字符串值。表示将时间戳截断至指定的时区中。如果不指定,表示将时间戳截断至会话时区中的指定精度。
FIELD参数取值
FIELD | 取值说明 |
---|---|
millennium | 截断到千年的第一天。 |
century | 截断到百年的第一天。 |
decade | 截断到十年的第一天。 |
year | 截断到年的第一天。 |
quarter | 截断到季度的第一天。 |
month | 截断到月份的第一天。 |
week | 截断到星期一。INTERVAL类型值不支持指定week进行截断。 |
day | 截断到天(即午夜00:00:00)。 |
hour | 截断到小时。 |
minute | 截断到分钟。 |
second | 截断到秒。 |
milliseconds | 截断到毫秒。 |
microseconds | 截断到微秒。 |
函数返回类型
返回值类型和SOURCE的类型保持一致。
示例
sql
SQL> SELECT DATE_TRUNC('year', '2020-10-20 12:30:25.5020555');
EXPR1 |
------------------------------------------------------------------------------
2020-01-01 00:00:00.000 AD |
-- 截断时间间隔类型
SQL> SELECT DATE_TRUNC('milliseconds', '20 12:30:25.5020555'::interval day to second);
EXPR1 |
------------------------------------------------------------------------------
20 12:30:25.502000 |
-- 截断到小时
SQL> SELECT DATE_TRUNC('hour', '2020-10-20 12:30:25.5020555','GMT+06:00');
EXPR1 |
------------------------------------------------------------------------------
2020-10-20 12:00:00.000 AD +08:00 |
-- 截断到毫秒
SQL> SELECT DATE_TRUNC('milliseconds', '2020-10-20 12:30:25.5020555','GMT-04:00');
EXPR1 |
------------------------------------------------------------------------------
2020-10-20 12:30:25.502 AD +08:00 |