Mysql adddate () ou date_add () com colunas de tabela?
-
27-09-2019 - |
Pergunta
Como faço algo como o seguinte
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... onde a coluna t_invoice.last_bill_date é uma data, t_invoice.interval é um número inteiro e t_invoice.interval_unit é uma string.
O que eu gosto na função adddate () é que, se eu escrever um
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Retorna convenientemente o último dia de fevereiro-2010-02-28. Portanto, sabe que 1 mês significa 28 dias para fevereiro (29 no ano bissexto), 31 Se o mês ímpar mês, 30, se o número número do número. Eu gostaria de preservar esse recurso em minha consulta.
Basicamente, quero determinar a próxima data de fatura de uma pessoa com base na frequência de cobrança desejada. Existe uma maneira melhor de conseguir isso?
Solução
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
OU
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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow