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:将单个日期/时间戳值映射到与日历对齐的区间。