YEARWEEK
📄字数 782
👁️阅读量 加载中...
功能描述
返回日期所在的年份和周数。当 date
参数中有表示一年的第一周或最后一周的日期时,结果中的年份可能与参数中的年份不同。
提示
- 与
WEEK(date, 0)
和WEEK(date, 1)
返回的周数不同,因为 WEEK() 是在给定年份的上下文中返回的周数,而YEARWEEK
则表示日期所处的真实年份和周数。例如:SELECT WEEK('2024-01-01', 0)
,返回0
,表示属于2024
年的第0
周;SELECT YEARWEEK('2024-01-01')
,返回202353
,表示处于2023
年的第53
周。
语法格式
sql
YEARWEEK(date[, mode])
输入参数
date
:DATE
或TIME
类型,当参数为TIME
类型时,其对应的日期为当前系统日期。mode
:用于确定周数计算的逻辑,INTEGER
类型,可选参数,缺省值为0
。
下表详细描述了mode的取值范围,以及工作机制:
mode | 一周的第一天 | 周数范围 | 第一周的定义标准 |
---|---|---|---|
0, 2 | Sunday | 1-53 | 包含本年度第一个周日的周 |
1, 3 | Monday | 1-53 | 包含至少4天属于本年度的周(ISO 8601标准) |
4, 6 | Sunday | 1-53 | 包含至少4天属于本年度的周 |
5, 7 | Monday | 1-53 | 包含本年度第一个周一的周 |
提示
- 因
NULL
无具体的类型,当第一个参数为NULL
时,会产生异常E10100 候选函数出现多义性
,需要手动为参数指定具体的类型,如:YEARWEEK(NULL::DATE)
或YEARWEEK(NULL::DATE, NULL)
。
输出结果
返回 INTEGER
类型,输入参数为 NULL
时,输出结果为 NULL
。
示例
sql
-- 返回 '2023-03-16' 所处的年份和周数
SQL> SELECT YEARWEEK('2023-03-16');
+--------+
| EXPR1 |
+--------+
| 202311 |
+--------+
-- 返回 '2025-01-04' 和 '2025-01-05' 所处的年份和周数
SQL> SELECT YEARWEEK('2025-01-04'), YEARWEEK('2025-01-05');
+--------+--------+
| EXPR1 | EXPR2 |
+--------+--------+
| 202452 | 202501 |
+--------+--------+