2010-11-12 25 views
1

我想有這個疑問:如何將CASE與日期INTERVAL一起使用?

SELECT DATE(DATE_SUB(DATE('2010-09-10'), (CASE DATETYPE WHEN 'H' THEN INTERVAL 1 WEEK ELSE INTERVAL 1 YEAR END CASE))) AS wdt 

MySQL的說,這是無效的

我也試過

SELECT _DATE AS wdt 
UNION ALL 
CASE DATETYPE 
     WHEN 'H' THEN SELECT DATE(DATE_SUB(_DATE, INTERVAL 1 YEAR)) AS wdt ; 
     ELSE SELECT DATE(DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK)) AS wdt; 
    END CASE; 
    UNION ALL 
    SELECT DATE(DATE_SUB(_DATE, INTERVAL 2 WEEK)) AS wdt 

不也行,錯誤的查詢語法。

如何爲假期日期選擇間隔1年。

回答

1

使用兩個DATE_SUB操作將工作:

SELECT IF (DATETYPE = 'H', 
      DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK), 
      DATE_SUB(DATE('2010-09-10'), INTERVAL 1 YEAR)) 
     as wdt; 
相關問題