当我运行:SELECT YEARWEEK('2018-09-11');
时,它返回201836
。
什么?当然应该在第37周。
我知道,有一个设置可以告诉MySQL应该从一周的哪一天开始,但是可以是星期日或星期一。这是星期二,所以不要紧。
有什么想法吗?我在CentOS 7服务器上使用MariaDB 10.1.32。
答案 0 :(得分:0)
您需要根据定义一年的第一周的方式正确使用 mode 标志
SELECT YEARWEEK('2018-09-12',0); -- 201836
SELECT YEARWEEK('2018-09-12',1); -- 201837
SELECT YEARWEEK('2018-09-12',2); -- 201836
SELECT YEARWEEK('2018-09-12',3); -- 201837
SELECT YEARWEEK('2018-09-12',4); -- 201837
SELECT YEARWEEK('2018-09-12',5); -- 201837
SELECT YEARWEEK('2018-09-12',6); -- 201837
SELECT YEARWEEK('2018-09-12',7); -- 201837
答案 1 :(得分:0)
您应该看到此站点以供参考:MySQL YEARWEEK()
根据上述内容,您可以指定应如何计算周数:第二个参数(可选)告诉您一周中的第一天是多少,以及应该包括多少天,例如:
1-一周的第一天是星期一,第一周超过3天
您可以尝试以下查询:
SELECT YEARWEEK('2018-09-11')
union all
SELECT YEARWEEK('2018-09-11', 1)
union all
SELECT YEARWEEK('2018-09-11', 3);
它返回:
201836
201837
201837
因此,您现在应该已经知道如何使用YEARWEEK
。
答案 2 :(得分:0)
在这种情况下,默认设置使用[0]模式选项(像“ SHOW VARIABLES LIKE'default_week_format”),这意味着考虑了星期日。也意味着将返回36的2018-09-08。为了使下周从星期一开始,模式为[1]。