Skip to main content

DATE_TRUNC

引入或更新: v1.2.745

将日期或时间戳截断到指定精度,提供了一种标准化的日期和时间戳操作方式。此函数设计为与各种数据库系统兼容,使用户更容易迁移和使用不同的数据库。

语法

DATE_TRUNC(<precision>, <date_or_timestamp>)
参数描述
<precision>必须是以下值之一: YEARQUARTERMONTHWEEKDAYHOURMINUTESECOND
<date_or_timestamp>DATETIMESTAMP 类型的值。

周开始配置

当使用 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-012022-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.0000002022-07-07 01:01:01.000000
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

另请参阅

  • TRUNC: 提供类似功能,但使用不同的语法以更好地兼容 SQL 标准。
Explore Databend Cloud for FREE
Low-cost
Fast Analytics
Easy Data Ingestion
Elastic Scaling
Try it today