【问题标题】:MySQL Getting Records over the Last Working WeekMySQL 在最后一个工作周内获取记录
【发布时间】:2013-03-01 09:42:56
【问题描述】:

我正在使用

 WHERE WEEK(curdate,3)-WEEK(date)=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 为真时无法处理。 请给我关于如何有效处理此案的建议。

【问题讨论】:

    标签: mysql week-number


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 2013-10-31
      相关资源
      最近更新 更多