web-dev-qa-db-fra.com

Comment obtenez-vous la date maximum possible dans Oracle?

Existe-t-il une fonction intégrée dans Oracle qui renvoie la date la plus élevée possible pouvant être insérée dans un champ de date?

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

Notez que la date minimale est beaucoup plus simple:

SELECT  TO_DATE(1, 'J')
FROM    dual
29
Quassnoi

À partir de la documentation 11g:

La base de données Oracle peut stocker des dates de l’ère julienne, allant du 1er janvier 4712 av. J.-C. au 31 décembre 9999 de notre ère (ère commune ou "AD").

http://download.Oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i1847

7
Angelo Marcotullio

Je ne connais pas de fonction mais d'après cet article :

Oracle 7: du 1er janvier 4712 av. J.-C. au 31 décembre 4712 ap.
Oracle 8: du 1er janvier 4712 av. J.-C. au 31 décembre 9999 de notre ère.
Oracle 9: du 1er janvier 4712 av. J.-C. au 31 décembre 9999 de notre ère.
PL/SQL: du 1er janvier 4712 av. J.-C. au 31 décembre 9999 de notre ère. 

2
Andrew Hare

Une autre façon, juste pour le plaisir:

SELECT to_date(5373484, 'J') + (1 - 1/24/60/60)
  FROM dual;

SELECT date '9999-12-31' + (1 - 1/24/60/60) 
  FROM dual;
2
FerranB

Au format Julian (JDDD), la date maximale Oracle est 2086307365. 

0
TonyP