我正在使用
WHERE WEEK(curdate,3)-WEEK(date)=1
获取最后一个工作周(周一至周日)记录的表格的所有行。全年运作良好,但在1月份将返回0一段时间,所以我必须采取
WHERE WEEK(curdate,3)+53-WEEK(date)
在那种情况下。我无法使用OR
,因为当两者都存在时,它会同时获取当前年份信息和去年信息。我已经尝试了COALESCE
和IFNULL
方法:
WHERE COALESCE(
(WEEK(curdate(),3)-WEEK(date,3) = 1),
(WEEK(curdate(),3)+53-WEEK(date,3) = 1
)
它适用于全年,但在IFNULL
为真时不管理这种情况。
请就这个案件的有效处理给我建议。
答案 0 :(得分:0)
您可以使用以下方式获取当周星期一的日期:
select SUBDATE(curdate(), WEEKDAY(curdate()));
然后在谓词中使用本周一的日期和上一周的星期一:
WHERE date >= SUBDATE(curdate(), WEEKDAY(curdate())) - interval 1 week
AND date < SUBDATE(curdate(), WEEKDAY(curdate()))