2015-02-23 31 views
0

我想運行一個查詢將返回所有4個工作日內curdate() -interval 1 daycurdate()之間的客戶訂單,但每星期一的標準應該是curdate() - interval 3 dayscurdate().CURDATE改變每個星期一

我無法找到一個例子,我當前的代碼是

(cast(from_unixtime(`schedule`.`last_change_timestamp`) as date) 
      BETWEEN (curdate() - interval 3 day) AND (curdate()) 

,我將其更改爲從1日和每週一再次更改- interval to 3。希望自動化這個過程。

任何幫助,將不勝感激。

感謝

回答

0
(
    (  DAY_OF_WEEK(CURDATE()) = 2 
     AND cast(FROM_UNIXTIME(schedule.last_change_timestamp) as date) 
      BETWEEN (curdate() - interval 3 day) AND (curdate() - interval 1 day) 
    ) 
    OR 
    (  DAY_OF_WEEK(CURDATE()) != 2 
     AND cast(FROM_UNIXTIME(schedule.last_change_timestamp) as date) 
      = (curdate() - interval 1 day) 
    ) 
) 

括號的格式是不是我會在真正的代碼中使用,但對於演示的目的希望它使得它更清晰。

http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_dayofweek

請注意,您還沒有指定您希望在週末發生的事情,所以我假設它是不相關的,都與週二至週五混爲一談他們。

+0

親愛的彼得,代碼工作正常,但我不想在輸出中包含當前日期,最近3天(如果是星期一)和昨天(如果是星期二,星期三,星期四或星期五)。當我今天執行我的代碼時,它給了我20,21,22和23的數據。我做錯了什麼? – user3774733 2015-02-23 11:24:17

+0

'between'運算符是包含性的。所以在每一行中,不要說「BETWEEN ... AND curdate()」,你應該說「BETWEEN ... AND(curdate() - interval 1 day)」。 – 2015-02-23 19:32:04

+0

如果您使用此答案,請將其標記爲答案。我試圖獲得聲譽積分,如果你不標記答案,那麼我得到nada ... – 2015-02-23 19:33:12

相關問題