Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar um valor de string/coluna como uma constante de intervalo de data do mysql (DAY, MONTH...)?


Infelizmente o MySQL espera uma palavra-chave após INTERVAL e não qualquer string ou valor numérico. Você pode conseguir o que deseja usando uma instrução CASE e fornecer os diferentes casos com as diferentes palavras-chave.

Como exemplo, digamos que você queira adicionar o valor com a unidade apropriada à data, então a instrução SQL seria a seguinte:
SELECT CASE unit
       WHEN "DAY" THEN date_add(date, INTERVAL value DAY)
       WHEN "MONTH" THEN date_add(date, INTERVAL value MONTH)
       END
       AS newDate
FROM table

Também funciona na cláusula WHERE a propósito :)