2010-11-12 4 views
1

Je veux avoir cette requête:Comment utiliser CASE avec la date 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 dit qu'il est invalide

aussi j'ai essayé

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 

qui ne fonctionne pas aussi, erreur dans la syntaxe de requête.

Comment puis-je sélectionner l'intervalle 1 an pour les dates de vacances.

Répondre

1

L'utilisation de deux opérations de DATE_SUB travaillerait:

SELECT IF (DATETYPE = 'H', 
      DATE_SUB(DATE('2010-09-10'), INTERVAL 1 WEEK), 
      DATE_SUB(DATE('2010-09-10'), INTERVAL 1 YEAR)) 
     as wdt; 
Questions connexes