Mysql AddDate () ou DATE_ADD () avec des colonnes de table?
-
27-09-2019 - |
Question
Comment puis-je faire quelque chose comme ce qui suit
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... où la t_invoice.last_bill_date colonne est une date, t_invoice.interval est un entier et t_invoice.interval_unit est une chaîne.
Ce que je aime la fonction AddDate () est que si j'écris un
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Il retourne facilement le dernier jour de Février - 2010-02-28. Donc, il sait que 1 mois signifie 28 jours pour février (29 sur l'année bissextile), 31 si le mois de nombre impair, 30 si même mois numéro. Je voudrais conserver cette fonctionnalité dans ma requête.
En fait, je veux déterminer la prochaine date de facturation d'une personne en fonction de sa fréquence de facturation souhaitée. Y at-il une meilleure façon d'y parvenir?
La solution
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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow