mysql'yearweek()'关闭1周

ar5n3qh5  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(346)

当我跑步时: SELECT YEARWEEK('2018-09-11'); 它回来了 201836 .
什么?当然,应该是第37周。
我知道,有一个设置告诉mysql一周应该从哪一天开始,但那不是星期天就是星期一。今天是星期二,所以这不重要。
有没有想过会发生什么?我正在centos 7服务器上使用mariadb 10.1.32。

weylhg0b

weylhg0b1#

您需要正确使用模式标志,这取决于您如何定义一年中的第一周

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文档

zf9nrax1

zf9nrax12#

在这种情况下,默认设置是使用[0]模式选项(显示“default\u week\u format”等变量),这意味着将考虑星期日。也指2018-09-08,返回36。为了让下周从周一开始,模式[1]。

frebpwbc

frebpwbc3#

你应该看看这个网站作为参考: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 .
演示。

相关问题