如何将CASE与日期INTERVAL一起使用?

时间:2010-11-12 09:09:49

标签: sql mysql case

我想要这个查询:

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 个答案:

答案 0 :(得分: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;