📣
TiDB Cloud Premium 开放公测中。为企业级工作负载提供无限扩展、即时弹性伸缩和高级安全保障。此页面由 AI 自动翻译,英文原文请见此处。

DATE_TRUNC



将日期或时间戳截断到指定精度,提供一种标准化的方式来处理日期和时间戳。该函数旨在与多种数据库系统兼容,从而让用户更容易进行迁移并使用不同的数据库。

语法

DATE_TRUNC(<precision>, <date_or_timestamp>)
参数描述
<precision>必须是以下值之一:YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE 和 SECOND。
<date_or_timestamp>DATE 或 TIMESTAMP 类型的值。

Week Start 配置

当使用 WEEK 作为精度参数时,结果取决于 week_start 设置,该设置定义了一周的第一天:

  • week_start = 1(默认):星期一被视为一周的第一天
  • week_start = 0:星期日被视为一周的第一天

你可以使用 SETTINGS 子句为特定查询更改此设置:

-- Set Sunday as the first day of the week SETTINGS (week_start = 0) SELECT DATE_TRUNC(WEEK, to_date('2024-04-05')); -- Set Monday as the first day of the week (default) 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:将单个日期/时间戳值映射到与日历对齐的时间区间。

文档内容是否有帮助?