MySQL'YEARWEEK()'关闭1周

时间:2018-09-11 07:15:44

标签: mysql sql mariadb

当我运行:SELECT YEARWEEK('2018-09-11');时,它返回201836

什么?当然应该在第37周。

我知道,有一个设置可以告诉MySQL应该从一周的哪一天开始,但是可以是星期日或星期一。这是星期二,所以不要紧。

有什么想法吗?我在CentOS 7服务器上使用MariaDB 10.1.32。

3 个答案:

答案 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

请参见MySql documentation

答案 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

Demo.

答案 2 :(得分:0)

在这种情况下,默认设置使用[0]模式选项(像“ SHOW VARIABLES LIKE'default_week_format”),这意味着考虑了星期日。也意味着将返回36的2018-09-08。为了使下周从星期一开始,模式为[1]。