这个简单的查询似乎没有输出正确的结果.鉴于模式是相同的(1)所有函数不应该"周("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)
Run Code Online (Sandbox Code Playgroud)
输出以下内容.
'201901','201901','53','1'
Run Code Online (Sandbox Code Playgroud)
我需要在某处设置默认开发设备吗?
WEEK从函数描述中看一下这个例子:
\n\n\nRun Code Online (Sandbox Code Playgroud)\n\nmysql> SELECT YEAR(\'2000-01-01\'), WEEK(\'2000-01-01\',0);\n -> 2000, 0\n有人可能会认为
\nWEEK()应该返回 52,因为给定的日期\n 实际上发生在 1999 年的第 52 周。相反,WEEK()返回0\n 使得返回值是 \xe2\x80\x9c 给定年份中的周数。\xe2\x80\ x9d
上面似乎表明所有具有 0-53 范围的模式都会返回相对于输入日期年份的周数(如果日期落在上一年的最后一周,它将返回 0)。
\n\n因此,如果一年的第一天 = 星期一,一年的第一周 = 今年有 4 天或更多天,则2018-12-31属于 2018 年第 53 周 - 和 - 2019 年第一周,并且 mode 参数决定返回值:
SELECT WEEK(\'2018-12-31\', 1); -- 53\nSELECT WEEK(\'2018-12-31\', 3); -- 1\nRun Code Online (Sandbox Code Playgroud)\n\n该YEARWEEK函数是明确的(结果包括年份),因此上述内容不适用。