2010-11-12 2 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; 
Смежные вопросы