Mysql ADDDATE () oder DATE_ADD () mit Tabellenspalten?
-
27-09-2019 - |
Frage
Wie mache ich so etwas wie die folgenden
SELECT ADDDATE(t_invoice.last_bill_date, INTERVAL t_invoice.interval t_invoice.interval_unit)
FROM t_invoice
... wo die Spalte t_invoice.last_bill_date ein Datum ist, t_invoice.interval eine ganze Zahl und t_invoice.interval_unit ist eine Zeichenfolge.
Was ich mag über die ADDDATE () Funktion ist, dass, wenn ich schreibe ein
SELECT ADDDATE('2010-01-31', INTERVAL 1 MONTH)
Es gibt bequem den letzten Tag des Monats Februar - 2010-02-28. So ist es weiß, dass 1 Monat 28 Tage für Februar (29 auf Schaltjahr), 31, wenn ungeradee Anzahl Monat, 30, wenn gerade Zahl Monat. Ich mag diese Funktion in meiner Anfrage erhalten.
Im Grunde möchte ich auf der Grundlage seiner gewünschten Abrechnungsfrequenz einer Person nächsten Rechnungsdatum bestimmen. Gibt es einen besseren Weg, um dies?
zu erreichenLösung
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
oder
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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow