Oracle PL/SQL DateTime Math - Intervalle
-
13-10-2019 - |
Frage
Ich habe Syntax wie verwendet {?EndDate} - INTERVAL '1' YEAR
Für eine Weile, und ich wusste, dass es ein Problem gab, das ich irgendwann treffen würde, und ich habe es einfach getroffen. Ich habe versucht zu tun DATE '2010-12-31' - INTERVAL '6' MONTH
, und es erstickt, weil es keinen 31. Juni gibt. Was ist der effizienteste und konsequenteste Weg, dies zu codieren? Bei der Aufspürung der Person, die die Entscheidung getroffen hat, dies auf diese Weise zu tun, wäre es unpraktisch. :-)
Lösung
Ich bin mir nicht sicher, ob es ein gibt konstistisch Way, da es sicherlich davon abhängt, was jemand denkt, ist 6 Monate. Doch imho ist es sicher anzunehmen, dass das add_months
ist ein Standardweg (zumindest in Oracle), um Monate zu subtrahieren oder hinzuzufügen:
select add_months(DATE '2010-12-31',-6) from dual;
Dieser Ausdruck kehrt am 30. Juni 2010 zurück (der letzte Tag in diesem Monat (wie der 31. im Dezember).