Mysql ADDDATE () o DATE_ADD () con colonne di una tabella?
-
27-09-2019 - |
Domanda
Come faccio a fare qualcosa di simile al seguente
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... dove la t_invoice.last_bill_date colonna è una data, t_invoice.interval è un intero e t_invoice.interval_unit è una stringa.
Quello che mi piace la funzione ADDDATE () è che se scrivo un
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Si ritorna comodamente l'ultimo giorno di febbraio - 2010-02-28. Quindi sa che 1 MESE significa 28 giorni per febbraio (29 su anno bisestile), 31 se dispari numero del mese, il 30 se numero pari mese. Vorrei conservare questa funzione nella mia interrogazione.
In sostanza, voglio stabilire data di fatturazione successiva di una persona in base alla sua frequenza di fatturazione desiderato. C'è un modo migliore per raggiungere questo obiettivo?
Soluzione
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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow