Skip to content

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 |