2009-03-26 7 views
21

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?

+5

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. –

Antwort

28
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 
+9

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

+1

@Alex: Ja, aber die OP fragte nach "maximal möglichem Datum". – Quassnoi

+1

Ich weiß. Addieren Sie einfach meine 2 Cent in Hoffnung, es hilft jemandem. – Alex

1

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.

2

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; 
+0

Die erste Abfrage sollte 'SELECT to_date (5373484, 'J') + (1 - 1/24/60/60) FROM Dual;' sein –

0

In Julian Format (JDDD) max Oracle Datum ist 2086307365.