Mysql ADDDATE () o DATE_ADD () con columnas de las tablas?
-
27-09-2019 - |
Pregunta
¿Cómo puedo hacer algo como lo siguiente
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... donde el t_invoice.last_bill_date columna es una fecha, t_invoice.interval es un entero y t_invoice.interval_unit es una cadena.
Lo que me gusta de la función ADDDATE () es que si escribo un
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Es conveniente devuelve el último día de febrero - 2010-02-28. Por lo que sabe que 1 MES significa 28 días de mar (29) en año bisiesto, 31 meses si es impar, 30 si un número par meses. Me gustaría conservar esta característica en mi consulta.
Básicamente, quiero para determinar la próxima fecha de facturación de una persona basándose en su frecuencia de facturación deseada. ¿Hay una mejor manera de lograr esto?
Solución
SELECT t_invoice.last_bill_date + INTERVAL
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.interval
WHEN 'hour' THEN t_invoice.interval*60
WHEN // etc...
END MINUTE as col1
FROM t_invoice
o
SELECT
CASE t_invoice.interval_unit
WHEN 'minute' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval MINUTE
WHEN 'hour' THEN t_invoice.last_bill_date + INTERVAL t_invoice.interval HOUR
WHEN // etc...
END as col1
FROM t_invoice
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow