Oracle -Datum - So fügen Sie Jahre bisher Jahre hinzu
-
26-10-2019 - |
Frage
Ich habe ein Datumfeld
DATE = 10/10/2010
sum = 4 (dies sind die Anzahl der Jahre durch Berechnung)
Gibt es eine Möglichkeit, vier Jahre bis 10.10.2010 hinzuzufügen und 10/10/2014 zu machen?
Lösung
Fügen Sie stattdessen Monate (12 * Anzahl von Jahren) hinzu. So was-
add_months(date'2010-10-10', 48)
Andere Tipps
Verwenden add_months
Beispiel:
SELECT add_months( to_date('10-OCT-2010'), 48 ) FROM DUAL;
Warnung
add_months, gibt den letzten Tag des resultierenden Monats zurück, wenn Sie den letzten Tag eines Monats von Anfang an eingeben.
So add_months(to_date('28-feb-2011'),12)
wird als Ergebnis 29-Feb-2012 zurückgeben.
Ich glaube, Sie könnten das benutzen ADD_MONTHS()
Funktion. 4 Jahre sind 48 Monate, also:
add_months(DATE,48)
Hier finden Sie einige Informationen zur Verwendung der Funktion:
http://www.techonthenet.com/oracle/functions/add_months.php
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::p11_question_id:1157035034361
Ich bin mir nicht sicher, wenn ich Ihre Frage richtig verstanden habe, aber
select add_months(someDate, numberOfYears * 12) from dual
könnte den Trick machen
Eine weitere Option, abgesehen von add_months
SELECT
SYSDATE,
SYSDATE
+ TO_YMINTERVAL ( '1-0' )
FROM
DUAL;
SYSDATE SYSDATE+TO_YMINTERVAL('1-0')
--------- ----------------------------
29-OCT-13 29-OCT-14
1 row selected.
SELECT
SYSDATE,
SYSDATE
+ TO_YMINTERVAL ( '2-0' )
FROM
DUAL;
SYSDATE SYSDATE+TO_YMINTERVAL('2-0')
--------- ----------------------------
29-OCT-13 29-OCT-15
1 row selected.
SELECT
TO_DATE ( '29-FEB-2004',
'DD-MON-YYYY' )
+ TO_YMINTERVAL ( '1-0' )
FROM
DUAL
*
Error at line 4
ORA-01839: date not valid for month specified
Aber der letzte ist illegal, da es keinen 29. Februar 2005 gibt, daher scheitert er in Fällen von Schaltjahr (29. Februar).
Lies das Dokumentation für das Selbe