DATE_TRUNC()¶
DATE_TRUNC()将时间值截断到指定日历或时钟单位的起点。
描述¶
DATE_TRUNC(unit, date) 返回将输入值向下舍入到指定 unit 起点的结果。单位名称不区分大小写。week 截断到周一零点。
支持的单位取决于输入类型:
输入类型 |
支持的单位 |
|---|---|
|
|
|
|
如果任一参数为 NULL,结果为 NULL。不支持的单位或输入类型会报错。
语法¶
DATE_TRUNC(unit, date)
参数¶
参数 |
说明 |
|---|---|
|
指定时间单位的字符串,大小写不敏感,必须是输入类型支持的单位。 |
|
要截断的 |
返回值¶
返回与输入所属时间类型一致的截断值。
示例¶
DROP DATABASE IF EXISTS date_trunc_demo;
CREATE DATABASE date_trunc_demo;
USE date_trunc_demo;
SELECT DATE_TRUNC('year', CAST('2024-05-16 12:34:56' AS DATETIME)) AS datetime_year;
SELECT DATE_TRUNC('hour', CAST('2024-05-16 12:34:56' AS DATETIME)) AS datetime_hour;
SELECT DATE_TRUNC('second', CAST('2024-05-16 12:34:56' AS TIMESTAMP)) AS timestamp_second;
SELECT DATE_TRUNC('week', CAST('2024-05-19' AS DATE)) AS date_week;
SELECT DATE_TRUNC('day', CAST('2024-05-16' AS DATE)) AS date_day;
CREATE TABLE readings (d DATETIME, value INT);
INSERT INTO readings VALUES ('2024-05-16 12:01:00', 1), ('2024-05-16 12:45:00', 2), ('2024-05-16 13:01:00', 3);
SELECT DATE_TRUNC('hour', d) AS bucket, SUM(value) AS total FROM readings GROUP BY bucket ORDER BY bucket;
DROP DATABASE date_trunc_demo;
以下单位不能用于 DATE 值:
-- Expected-Success: false
SELECT DATE_TRUNC('hour', CAST('2024-05-16' AS DATE));