DATE_TRUNC
引入或更新于:v1.2.745
将日期或时间戳截断到指定精度,为日期和时间戳操作提供标准化方式。该函数旨在兼容多种数据库系统,便于用户迁移并在不同数据库间工作。
语法
DATE_TRUNC(<precision>, <date_or_timestamp>)
| 参数 | 描述 | 
|---|---|
| <precision> | 必须是以下值之一: YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE和SECOND。 | 
| <date_or_timestamp> | DATE或TIMESTAMP类型的值。 | 
周起始日配置
当使用 WEEK 作为精度参数时,结果取决于 week_start 设置,该设置定义一周的第一天:
- week_start = 1(默认):星期一被视为一周的第一天
- week_start = 0:星期日被视为一周的第一天
可使用 SETTINGS 子句为特定查询更改此设置:
-- 将星期日设为一周的第一天
SETTINGS (week_start = 0) SELECT DATE_TRUNC(WEEK, to_date('2024-04-05'));
-- 将星期一设为一周的第一天(默认)
SETTINGS (week_start = 1) SELECT DATE_TRUNC(WEEK, to_date('2024-04-05'));
返回类型
与 <date_or_timestamp> 相同。
示例
SELECT
    DATE_TRUNC(MONTH, to_date('2022-07-07')),
    DATE_TRUNC(WEEK, to_date('2022-07-07'));
┌────────────────────────────────────────────────────────────────────────────────────┐
│ DATE_TRUNC(MONTH, to_date('2022-07-07')) │ DATE_TRUNC(WEEK, to_date('2022-07-07')) │
├──────────────────────────────────────────┼─────────────────────────────────────────┤
│ 2022-07-01                               │ 2022-07-04                               │
└────────────────────────────────────────────────────────────────────────────────────┘
SELECT
    DATE_TRUNC(HOUR, to_timestamp('2022-07-07 01:01:01.123456')),
    DATE_TRUNC(SECOND, to_timestamp('2022-07-07 01:01:01.123456'));
┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ DATE_TRUNC(HOUR, to_timestamp('2022-07-07 01:01:01.123456')) │ DATE_TRUNC(SECOND, to_timestamp('2022-07-07 01:01:01.123456')) │
├─────────────────────────────────────────────────────────────┼────────────────────────────────────────────────────────────────┤
│ 2022-07-07 01:00:00.000000                                  │ 2022-07-07 01:01:01.000000                                     │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
另请参阅
- TRUNC:提供类似功能,语法不同,以更好地兼容 SQL 标准。
- TIME_SLICE:将单个日期/时间戳值映射到与日历对齐的区间。

