2012-10-31 93 views
0

我有一個名爲pmday的參數,當它被髮送時,檢查該日是在星期六還是星期日,如果是,則顯示星期一之後。如果在工作日,MySQL將日期添加到列字段

我是相對較新的mySQL,我正在運行SELECT語句以其他方式使用pmday。我可以創建一個列,顯示星期一之後,只有在週末的時候?

這是我一直在嘗試(和失敗)做的一個例子。我不知道這是否只是我不知道如何,在選擇語句不允許的功能,或通用格式和逗號使用的問題。

謝謝!

SELECT 
    pmday AS EnteredDate, 
    IF DateFormat(pmday, '%W') = 'Saturday' then 
     Date_Add('pmday', INTERVAL 2 DAY) AS FollowingMonday 
    Else If DateFormat(pmday, '%W') = 'Sunday' then 
     Date_Add('pmday', INTERVAL 1 DAY) AS FollowingMonday 
    END IF; 
+2

如果你沒有在表中存儲數據,那麼MySQL可能是錯誤的ol的工作...... – eggyal

回答

0
SELECT 
    pmday AS EnteredDate, 
    CASE Date_Format(pmday, '%W') 
     WHEN 'Saturday' THEN Date_Add(pmday, INTERVAL 2 DAY) 
     WHEN 'Sunday' THEN Date_Add(pmday, INTERVAL 1 DAY) 
     ELSE pmday 
    END AS FollowingMonday 
; 
+0

非常感謝你,我會繞圈走,誰知道多久!我很高興知道我沒有完全離開,但是誰知道多久,直到我能得到它 – MisterNaux

0

你的if語句的錯誤..

這個工作對我來說...

set @pmday = current_date; 


select 
    if(Date_Format(@pmday, '%W') = 'Saturday', 
    Date_Add(@pmday, INTERVAL 2 DAY), 

    if(Date_Format(@pmday, '%W') = 'Sunday', 
    Date_Add(@pmday, INTERVAL 1 DAY), @pmday) 
); 
0

---找下週一,如果選擇的日期是星期六或星期日

set @pmday = "2012-10-20"; 
select if(
      DAYOFWEEK(@pmday) = 1 or DAYOFWEEK(@pmday) = 7 
      , DATE_ADD(@pmday, INTERVAL (9 - IF(DAYOFWEEK(@pmday)=1, 8, DAYOFWEEK(@pmday))) DAY) 
      , @pmday 
     );