MySQL在上一个工作周获得记录

时间:2013-03-01 09:42:57

标签: mysql week-number

我正在使用

 WHERE WEEK(curdate,3)-WEEK(date)=1 

获取最后一个工作周(周一至周日)记录的表格的所有行。全年运作良好,但在1月份将返回0一段时间,所以我必须采取

 WHERE WEEK(curdate,3)+53-WEEK(date)

在那种情况下。我无法使用OR,因为当两者都存在时,它会同时获取当前年份信息和去年信息。我已经尝试了COALESCEIFNULL方法:

 WHERE COALESCE(
     (WEEK(curdate(),3)-WEEK(date,3) = 1),
     (WEEK(curdate(),3)+53-WEEK(date,3) = 1
 )

它适用于全年,但在IFNULL为真时不管理这种情况。 请就这个案件的有效处理给我建议。

1 个答案:

答案 0 :(得分:0)

您可以使用以下方式获取当周星期一的日期:

select SUBDATE(curdate(), WEEKDAY(curdate()));

然后在谓词中使用本周一的日期和上一周的星期一:

WHERE date >= SUBDATE(curdate(), WEEKDAY(curdate())) - interval 1 week
AND date < SUBDATE(curdate(), WEEKDAY(curdate()))