Есть ли в Oracle встроенная функция, которая будет возвращать максимально возможную дату, которая может быть вставлена в поле даты?
SELECT TO_DATE('31.12.9999 23:59:59', 'dd.mm.yyyy hh24:mi:ss') FROM dual
Обратите внимание, что минимальная дата намного проще:
SELECT TO_DATE(1, 'J') FROM dual
Из документов 11g:
База данных Oracle может хранить даты в юлианскую эпоху, начиная с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э. (Common Era, или «AD»).
http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/datatype.htm#i1847
Другие способы, просто для удовольствия:
SELECT to_date(5373484, 'J') + (1 - 1/24/60/60) FROM dual; SELECT date '9999-12-31' + (1 - 1/24/60/60) FROM dual;
Я не знаю функции, но согласно этой статье :
Oracle 7: с 1 января 4712 г. до н.э. до 31 декабря 4712 г. н.э. Oracle 8: с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э. Oracle 9: с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э. PL / SQL: с 1 января 4712 г. до н.э. до 31 декабря 9999 г. н.э.
В юлианском формате (JDDD) максимальная дата Oracle составляет 2086307365.