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?Comment obtenez-vous la date maximale possible dans Oracle?
Répondre
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
Je pense que pour les buts de la plupart des gens 'TO_DATE ('9999', 'aaaa')' serait une alternative beaucoup plus courte et acceptable, en particulier lors de l'utilisation pour fusionner des valeurs nulles dans les comparaisons. – Alex
@Alex: Oui, mais l'op a demandé "date maximale possible". – Quassnoi
Je sais. Juste en ajoutant mes 2 cents en espérant que ça aide quelqu'un. – Alex
Je ne sais pas d'une fonction, mais selon this article:
Oracle 7: à partir du 1er Janvier, 4712 BC au 31 décembre 4712 AD.
Oracle 8: du 1er janvier 4712 avant JC au 31 décembre 9999 AD.
Oracle 9: du 1er janvier 4712 avant JC au 31 décembre 9999 AD.
PL/SQL: du 1er janvier 4712 avant JC au 31 décembre 9999 AD.
De 11g docs:
Oracle Database peut stocker des dates à l'époque Julian, allant du 1er Janvier, 4712 BCE jusqu'au 31 Décembre, 9999 CE (ère, ou 'AD').
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i1847
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;
La première requête devrait être 'SELECT to_date (5373484, 'J') + (1 - 1/24/60/60) FROM dual;' –
En format Julian (JDDD) la date max Oracle est 2086307365.
Pourquoi? Si vous commencez à placer des valeurs factices «high-date» dans une table, cela peut «désorienter» l'optimiseur qui supposera que vous avez toute une gamme de valeurs de date réparties sur les 8 000 prochaines années. –