2009-03-26 17 views
21

日付フィールドに挿入できる可能な最高の日付を戻す機能がOracleに組み込まれていますか?最小限の日付がはるかに簡単であることをOracleで可能な最大日付はどのようにして得られますか?

+5

のはなぜですか?ダミーの「日付の高い」値をテーブルに入れることを開始すると、それは次の8000年に渡って日付値の全範囲が広がっていると仮定するオプティマイザを混乱させる可能性があります。 –

答えて

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

注:

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

ほとんどの人の目的では、特にTO_DATE( '9999'、 'yyyy')は、特に比較でヌルを合体するときに、はるかに短く受け入れられる代替手段です。 – Alex

+1

@Alex:はい、しかし、OPは "可能な最大の日付"を求めました。私が知っているのは – Quassnoi

+1

です。私の2セントを追加するだけで、誰かを助けることができます。 – Alex

1

私は、関数の知っているが、this articleに応じません。

Oracleの7:1月1日から、 4712年から4712年12月31日まで。
Oracle 8:紀元前4712年1月1日〜紀元前9999年12月31日
オラクル9:紀元前4712年1月1日〜紀元前9999年12月31日
PL/SQL:〜4712年1月1日から紀元前9999年12月31日まで。 11グラムのドキュメントから

6

Oracle Databaseは1月1日から、4712 BCE 12月31日までの範囲、ユリウス暦時代に日付を格納することができ、9999 CE(共通時代、すなわち 'AD')。

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

+4

一般的な時代...それは "自白的に偏った" ADの政治的に正しい言葉ですか? – Thilo

+0

質問への本当の答え... 1月1日から12月31日まで9999 – Doogle

2

ちょうど楽しみのためのもう一つの方法、:ユリウス形式(JDDD)で

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

最初のクエリは、SELECT to_date(5373484、 'J')+(1- 1/24/60/60)FROM dual; –

0

最大Oracle日付が2086307365.

関連する問題