2013-03-01 78 views
1
MySQL的

獲取記錄我使用在最後一個工作周

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是真的不管理的情況。 請給我有關處理這種情況的建議。

回答

0

可以使用得到當前一週的星期一日期:

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

然後利用這一週的星期一和前一週的週一的日期在您的謂詞:

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