这个简单的查询似乎没有输出正确的结果。鉴于所有功能的模式都相同(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函数描述看这个例子:
WEEK
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0); -> 2000, 0 可能有人争辩说WEEK()应该返回52,因为给定的日期实际上发生在1999年的第52周。WEEK()返回0则返回值是``给定年份的周数’‘。
mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0); -> 2000, 0
可能有人争辩说WEEK()应该返回52,因为给定的日期实际上发生在1999年的第52周。WEEK()返回0则返回值是``给定年份的周数’‘。
WEEK()
0
上面的内容似乎暗示所有具有0-53范围的模式都将返回相对于输入日期的年份的星期数(如果日期位于上一年的最后一周,则它将返回0)。
因此,如果一年的第一天=星期一并且一年的第一周=今年有4天或更多天,则2018-12-31属于2018年的53周-和-2019年的第一周,并且mode参数确定返回值:
2018-12-31
SELECT WEEK('2018-12-31', 1); -- 53 SELECT WEEK('2018-12-31', 3); -- 1
该YEARWEEK函数是明确的(结果包括年份),因此以上内容不适用。
YEARWEEK