2009-03-26 122 views
21

¿Hay una función incorporada en Oracle que devolverá la fecha más alta posible que se puede insertar en un campo de fecha?¿Cómo se obtiene la fecha máxima posible en Oracle?

+5

¿Por qué? Si comienzas a incluir valores ficticios de 'fecha alta' en una tabla, puede 'confundir' al optimizador, lo que supondrá que tienes un rango completo de valores de fecha repartidos en los próximos 8 mil años. –

Respuesta

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

Tenga en cuenta que la fecha mínima es mucho más simple:

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

Creo que para los propósitos de la mayoría de las personas 'TO_DATE ('9999', 'yyyy')' sería una alternativa mucho más corta y aceptable, especialmente cuando se usa para unir nulos en las comparaciones. – Alex

+1

@Alex: Sí, pero el operador pidió la "fecha máxima posible". – Quassnoi

+1

Lo sé. Solo agregué mis 2 centavos con la esperanza de que ayuden a alguien. – Alex

1

No sé de una función pero de acuerdo con this article:

Oracle 7: a partir del 1 de enero de 4712 aC al 31 de diciembre de 4712 AD.
Oracle 8: del 1 de enero de 4712 aC al 31 de diciembre de 9999 AD.
Oracle 9: desde el 1 de enero de 4712 aC hasta el 31 de diciembre de 9999 AD.
PL/SQL: desde el 1 de enero de 4712 aC hasta el 31 de diciembre de 9999 AD.

2

Otras maneras, sólo por diversión:

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 primera consulta debe ser 'SELECT to_date (5373484, 'J') + (1 - 1/24/60/60) FROM dual;' –

0

En formato de Julian (JDDD) la fecha máxima de Oracle es 2086307365.

Cuestiones relacionadas