Gibt es eine in Oracle integrierte Funktion, die das höchstmögliche Datum zurückgibt, das in ein Datumsfeld eingefügt werden kann?Wie erhalten Sie das maximal mögliche Datum in Oracle?
Antwort
SELECT TO_DATE('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss')
FROM dual
Beachten Sie, dass ein minimales Datum viel einfacher ist:
SELECT TO_DATE(1, 'J')
FROM dual
Ich denke, für die Zwecke der meisten Leute wäre TO_DATE ('9999', 'yyyy') eine viel kürzere und akzeptable Alternative, besonders wenn man Nullen in Vergleichen zusammenfasst. – Alex
@Alex: Ja, aber die OP fragte nach "maximal möglichem Datum". – Quassnoi
Ich weiß. Addieren Sie einfach meine 2 Cent in Hoffnung, es hilft jemandem. – Alex
Ich weiß nicht, eine Funktion, sondern nach this article:
Oracle 7: ab dem 1. Januar 4712 BC bis zum 31. Dezember 4712 AD.
Oracle 8: vom 1. Januar 4712 BC bis zum 31. Dezember 9999 AD.
Oracle 9: vom 1. Januar 4712 BC bis zum 31. Dezember 9999 AD.
PL/SQL: vom 1. Januar 4712 BC bis zum 31. Dezember 9999 AD.
Von der 11g-Dokumentation:
Oracle Database Daten in der Julian Ära speichern kann, ab dem 1. Januar reicht, 4712 BCE bis zum 31. Dezember 9999 CE (Common Era, oder 'AD').
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i1847
andere Wege, nur so zum Spaß:
SELECT to_date(5373484, 'J') + (1 - 1/24/60/60)
FROM dual;
SELECT date '9999-12-31' + (1 - 1/24/60/60)
FROM dual;
Die erste Abfrage sollte 'SELECT to_date (5373484, 'J') + (1 - 1/24/60/60) FROM Dual;' sein –
In Julian Format (JDDD) max Oracle Datum ist 2086307365.
Warum? Wenn Sie beginnen, Dummy-Werte mit "High-Dates" in eine Tabelle einzugeben, kann dies den Optimierer "verwirren", der davon ausgeht, dass Sie eine ganze Reihe von Datumswerten über die nächsten 8000 Jahre verteilt haben. –