Mysql adddate () или date_add () со столбцами таблицы?
-
27-09-2019 - |
Вопрос
Как мне сделать что-то вроде следующего
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... где столбец t_invoice.last_bill_date - это дата, t_invoice.interval - это целое число и t_invoice.interval_unit - это строка.
Что мне нравится в функции Adddate (), это то, что если я напишу
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Это удобно возвращает последний день февраля - 2010-02-28. Таким образом, он знает, что 1 месяц означает 28 дней для февраля (29 на скачковом году), 31, если нечетное число месяцев, 30, если даже месяц месяц. Я хотел бы сохранить эту функцию в моем запросе.
По сути, я хочу определить следующий срок счета человека, основанный на желаемой частоте выставления счетов. Есть ли лучший способ добиться этого?
Решение
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
ИЛИ
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
Не связан с StackOverflow