DATE_TRUNC 函数
功能描述
DATE_TRUNC 函数用于将 timestamp 类型的数据按照指定的字段截断到特定的时间点。该函数能够根据不同的字段参数,将时间截断到年、季度、月、周、日、小时、分钟、秒、毫秒或微秒等不同级别。
参数说明
- field (string类型): 表示截断的时间字段,常见的字段有 'YEAR', 'QUARTER', 'MONTH', 'WEEK', 'DAY', 'HOUR', 'MINUTE', 'SECOND', 'MILLISECOND' 和 'MICROSECOND',字段名称不区分大小写。
- expr (date/timestamp_ltz/string类型): 表示要进行截断操作的时间数据。
返回类型
timestamp 类型。
使用示例
- 截断到指定年份的第一天(time 部分置零):
SELECT date_trunc('YEAR', '2022-03-26 16:24:52.656');
-- 返回结果:2022-01-01 00:00:00
- 截断到指定季度的第一天(time 部分置零):
SELECT date_trunc('QUARTER', '2022-03-26 16:24:52.656');
-- 返回结果:2022-01-01 00:00:00
- 截断到指定月份的第一天(time 部分置零):
SELECT date_trunc('MONTH', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-01 00:00:00
- 截断到指定周的星期一(time 部分置零):
SELECT date_trunc('WEEK', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-21 00:00:00
- 截断到指定日期(time 部分置零):
SELECT date_trunc('DAY', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-26 00:00:00
- 截断到指定小时(minute, second 和毫秒部分置零):
SELECT date_trunc('HOUR', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-26 16:00:00
- 截断到指定分钟(second 和毫秒部分置零):
SELECT date_trunc('MINUTE', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-26 16:24:00
- 截断到指定秒(毫秒部分置零):
SELECT date_trunc('SECOND', '2022-03-26 16:24:52.656');
-- 返回结果:2022-03-26 16:24:52
注意事项
- 当 expr 参数为字符串类型时,确保字符串格式正确,否则可能导致函数执行失败。
- 该函数对于时间的截断操作不会改变原始时间数据,仅返回截断后的时间结果。