2009-03-26 20 views
21

Esiste una funzione incorporata in Oracle che restituirà la data più alta possibile che può essere inserita in un campo data?Come si ottiene la massima data possibile in Oracle?

+5

Perché? Se inizi a inserire valori fittizi di "data avanzata" in una tabella, può "confondere" l'ottimizzatore che presumerà di avere un intero intervallo di valori di date distribuiti negli anni successivi a 8000. –

risposta

28
SELECT TO_DATE('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss') 
FROM dual 

Si noti che la data minima è molto più semplice:

SELECT TO_DATE(1, 'J') 
FROM dual 
+9

Penso che per gli scopi della maggior parte delle persone 'TO_DATE ('9999','yyyy ')' sarebbe un'alternativa molto più breve e accettabile, specialmente quando si usa per coalesce nulli nei confronti. – Alex

+1

@Alex: Sì, ma l'operatore ha chiesto "la data massima possibile". – Quassnoi

+1

Lo so. Aggiungo solo i miei 2 centesimi nella speranza che aiuti qualcuno. – Alex

1

Non so di una funzione, ma secondo this article:

Oracle 7: dal 1 ° gennaio, 4712 aC al 31 dicembre 4712 d.C.
Oracle 8: dal 1 gennaio 4712 aC al 31 dicembre 9999 d.C.
Oracle 9: dal 1 gennaio 4712 aC al 31 dicembre 9999 d.C.
PL/SQL: dal 1 gennaio 4712 aC al 31 dicembre 9999 d.C.

2

Altri modi, solo per divertimento:

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

La prima query deve essere 'SELECT to_date (5373484, 'J') + (1 - 1/24/60/60) FROM dual;' –

0

In formato Giuliano (JDDD) la data massima di Oracle è 2086307365.

Problemi correlati