使用周号获取MySql中一周的第一天

dav*_*ash 31 mysql sql

如何获得给定周数的第一天?

比如,我写这篇文章,我们在第29周.我想编写一个MySQL查询将返回周日7月18日使用此WEEKNO 29作为唯一可用的参数.

小智 48

这是根据当前日期获取一周的第一天和一周的最后一天的准确方法:

adddate(curdate(), INTERVAL 1-DAYOFWEEK(curdate()) DAY) WeekStart,
adddate(curdate(), INTERVAL 7-DAYOFWEEK(curdate()) DAY) WeekEnd
Run Code Online (Sandbox Code Playgroud)

  • 我认为这个解决方案可能会受到系统区域设置的影响,我使用它来代替`adddate(curdate(),INTERVAL -WEEKDAY(curdate())DAY)WeekStart` (9认同)

dcp*_*dcp 45

您可以使用:

SELECT STR_TO_DATE('201003 Monday', '%X%V %W');
Run Code Online (Sandbox Code Playgroud)

这将为您提供2010年第3周的星期一日期,即2010-01-18.

另一个例子:

 SELECT STR_TO_DATE('201052 Sunday', '%X%V %W');
Run Code Online (Sandbox Code Playgroud)

会给你2010年第52周的星期日日期,即2010-12-26.

最后,使用您的原始示例:

SELECT STR_TO_DATE('201029 Sunday', '%X%V %W');
Run Code Online (Sandbox Code Playgroud)

这给了2010-07-18.

  • 当使用周模式3(ISO标准,qv http://stackoverflow.com/questions/11788885/)时,SELECT STR_TO_DATE('201003 Monday','%X%V%W')将给出下周的星期一! (3认同)
  • @chrpes您可能需要使用%x%v而不是%X%V来获得所需的结果.因为'%X%V`使用星期日作为月的开始日,`%x%v`使用星期一作为月的开始日. (2认同)