gpt4 book ai didi

MySQL yearweek() vs week() 返回不同的结果

转载 作者:可可西里 更新时间:2023-11-01 07:07:40 25 4
gpt4 key购买 nike

这个简单的查询似乎没有输出正确的结果。鉴于所有函数的模式都相同 (1),“week("2018-12-31", 1)”不应该显示值 1 而不是 53 吗?

SELECT yearweek("2018-12-31", 1), yearweek("2019-01-02", 1),
week("2018-12-31", 1), week("2019-01-02", 1)

输出如下。

'201901','201901','53','1'

是否有我需要在某处设置的默认开发更多?

最佳答案

查看来自 WEEK 的示例功能说明:

mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
-> 2000, 0

One might argue that WEEK() should return 52 because the given date actually occurs in the 52nd week of 1999. WEEK() returns 0 instead so that the return value is “the week number in the given year.”

以上似乎表明所有具有 0-53 范围的模式都将返回相对于输入日期年份的周数(如果日期落在前一年的最后一周,它将返回 0)。

因此,如果一年的第一天 = 星期一,一年的第一周 = 今年有 4 天或更多天,则 2018-12-31 属于 2018 年的第 53 周 - 和 - 的第 1 周2019,mode参数决定返回值:

SELECT WEEK('2018-12-31', 1); -- 53
SELECT WEEK('2018-12-31', 3); -- 1

YEARWEEK函数是明确的(结果包括年份)所以上面不适用。

关于MySQL yearweek() vs week() 返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54020798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com