27

Is there a function built into Oracle that will return the highest possible date that may be inserted into a date field?

Glenn Wark
  • 1,499
  • 4
  • 19
  • 23
  • 5
    Why ? If you start putting in dummy 'high-date' values into a table, it can 'confuse' the optimizer which will assume that you have a whole range of date values spread over the next 8 thousand years. – Gary Myers Mar 27 '09 at 09:30

5 Answers5

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

Note that minimal date is much more simple:

SELECT  TO_DATE(1, 'J')
FROM    dual
Quassnoi
  • 413,100
  • 91
  • 616
  • 614
8

From the 11g docs:

Oracle Database can store dates in the Julian era, ranging from January 1, 4712 BCE through December 31, 9999 CE (Common Era, or 'AD').

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

2

I do not know of a function but according to this article:

Oracle 7: from January 1, 4712 BC to December 31, 4712 AD.
Oracle 8: from January 1, 4712 BC to December 31, 9999 AD.
Oracle 9: from January 1, 4712 BC to December 31, 9999 AD.
PL/SQL: from January 1, 4712 BC to December 31, 9999 AD.

Andrew Hare
  • 344,730
  • 71
  • 640
  • 635
2

Another ways, just for fun:

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

SELECT date '9999-12-31' + (1 - 1/24/60/60) 
  FROM dual;
Lalit Kumar B
  • 47,486
  • 13
  • 97
  • 124
FerranB
  • 35,683
  • 18
  • 66
  • 85
0

In Julian format (JDDD) the max Oracle date is 2086307365.

TonyP
  • 5,655
  • 13
  • 60
  • 94