@@ -3,44 +3,56 @@ title: DATE_DIFF
33---
44import FunctionDescription from '@site/src /components/FunctionDescription';
55
6- <FunctionDescription description =" 引入或更新 : v1.2.645 " />
6+ <FunctionDescription description =" Introduced or updated : v1.2.723 " />
77
8- 根据指定的时间单位计算两个日期或时间戳之间的差异 。如果 ` <end_date> ` 在 ` <start_date> ` 之后,结果为正;如果 ` <end_date> ` 在 ` <start_date> ` 之前,结果为负。
8+ 计算两个日期或时间戳之间基于指定时间单位的差值 。如果 ` <end_date> ` 在 ` <start_date> ` 之后,结果为正;如果 ` <end_date> ` 在 ` <start_date> ` 之前,结果为负。
99
1010## 语法
1111
1212``` sql
13- DATE_DIFF(< unit> , < start_date> , < end_date> )
13+ DATE_DIFF(
14+ YEAR | QUARTER | MONTH | WEEK | DAY | HOUR | MINUTE | SECOND |
15+ DOW | DOY | EPOCH | ISODOW | YEARWEEK | MILLENNIUM,
16+ < start_date_or_timestamp> ,
17+ < end_date_or_timestamp>
18+ )
1419```
1520
16- | 参数 | 描述 |
17- | ----------------| -------------------------------------------------------------------------------------------------------------|
18- | ` <unit> ` | 差异的时间单位:` YEAR ` , ` QUARTER ` , ` MONTH ` , ` WEEK ` , ` DAY ` , ` HOUR ` , ` MINUTE ` , 或 ` SECOND ` 。 |
19- | ` <start_date> ` | 起始日期或时间戳。 |
20- | ` <end_date> ` | 结束日期或时间戳。 |
21+ | 关键字 | 描述 |
22+ | --------------| -----------------------------------------------------------------------|
23+ | ` DOW ` | 星期几。 星期日 (0) 到星期六 (6)。 |
24+ | ` DOY ` | 一年中的第几天。 1 到 366。 |
25+ | ` EPOCH ` | 自 1970-01-01 00:00:00 以来的秒数。 |
26+ | ` ISODOW ` | ISO 星期几。 星期一 (1) 到星期日 (7)。 |
27+ | ` YEARWEEK ` | 年和周数的组合,遵循 ISO 8601 标准(例如,202415)。 |
28+ | ` MILLENNIUM ` | 日期的千年(1 代表 1-1000 年,2 代表 1001-2000 年,依此类推)。 |
2129
2230## 示例
2331
24- 此示例计算 ** 昨天 ** 和 ** 今天 ** 之间的小时差 :
32+ 此示例计算固定时间戳 ( ` 2020-01-01 00:00:00 ` ) 与当前时间戳 ( ` NOW() ` ) 之间的差值,涵盖各种单位,如年、ISO 星期几、年-周和千年 :
2533
2634``` sql
27- SELECT DATE_DIFF(HOUR, YESTERDAY(), TODAY());
28-
29- ┌───────────────────────────────────────┐
30- │ DATE_DIFF(HOUR, yesterday(), today()) │
31- ├───────────────────────────────────────┤
32- │ 24 │
33- └───────────────────────────────────────┘
35+ SELECT
36+ DATE_DIFF(YEAR, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_year,
37+ DATE_DIFF(QUARTER, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_quarter,
38+ DATE_DIFF(MONTH, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_month,
39+ DATE_DIFF(WEEK, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_week,
40+ DATE_DIFF(DAY, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_day,
41+ DATE_DIFF(HOUR, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_hour,
42+ DATE_DIFF(MINUTE, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_minute,
43+ DATE_DIFF(SECOND, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_second,
44+ DATE_DIFF(DOW, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_dow,
45+ DATE_DIFF(DOY, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_doy,
46+ DATE_DIFF(EPOCH, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_epoch,
47+ DATE_DIFF(ISODOW, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_isodow,
48+ DATE_DIFF(YEARWEEK, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_yearweek,
49+ DATE_DIFF(MILLENNIUM, TIMESTAMP ' 2020-01-01 00:00:00' , NOW()) AS diff_millennium;
3450```
3551
36- 此示例计算当前日期与2000年1月1日之间的年份差:
37-
3852``` sql
39- SELECT NOW(), DATE_DIFF(YEAR, NOW(), TO_DATE(' 2000-01-01' ));
40-
41- ┌────────────────────────────────────────────────────────────────────────────┐
42- │ now() │ DATE_DIFF(YEAR, now(), to_date(' 2000-01-01' )) │
43- ├────────────────────────────┼───────────────────────────────────────────────┤
44- │ 2024 - 10 - 15 03 :38 :23 .726599 │ - 24 │
45- └────────────────────────────────────────────────────────────────────────────┘
53+ ┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
54+ │ diff_year │ diff_quarter │ diff_month │ diff_week │ diff_day │ diff_hour │ diff_minute │ diff_second │ diff_dow │ diff_doy │ diff_epoch │ diff_isodow │ diff_yearweek │ diff_millennium │
55+ ├───────────┼──────────────┼────────────┼───────────┼──────────┼───────────┼─────────────┼─────────────┼──────────┼──────────┼────────────┼─────────────┼───────────────┼─────────────────┤
56+ │ 5 │ 21 │ 63 │ 276 │ 1932 │ 46386 │ 2783184 │ 166991069 │ 1932 │ 1932 │ 166991069 │ 1932 │ 515 │ 0 │
57+ └─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
4658```
0 commit comments