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 标准。