sql >> データベース >  >> RDS >> Oracle

異なる日付Oracle11gとTOAD

    両方のバージョンで複数の暗黙的な日付変換を行っています。これ:

    SELECT to_date(to_char(to_date('01-FEB-1949'))) FROM DUAL; 
    

    と同等です:

    SELECT to_date(to_char(to_date('01-FEB-1949', <NLS_DATE_FORMAT>),
        <NLS_DATE_FORMAT>, <NLS_DATE_FORMAT>)) FROM DUAL;
    

    一方、2番目のクエリでは、そのうちの1つが特定の形式に置き換えられています。これはデフォルトのフォーマットのように見えます。レジストリを直接変更しなくても、Toadプリファレンスで設定できると思います。 Toadに関連するものを変更しているのかどうかは明確ではありません-DD-MON-RR 、これらのクエリにプラグインすることで示されるように:

    SELECT to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
            'DD-MON-RR'),'DD-MON-RR') AS date1,
        to_date(to_char(to_date('01-FEB-1949','DD-MON-RR'),
            'dd-MON-yyyy'),'DD-MON-RR') AS date2 FROM DUAL;
    
    DATE1                            DATE2
    February, 01 2049 00:00:00+0000  February, 01 1949 00:00:00+0000
    

    SQLフィドル

    このSQLフィドル で確認できます。 最初のバージョンでは、日付は年が49の文字列として表示されます。 1949ではなく 、そしてそれは解釈されます-RR マスク-2049として 、これは予想される動作です。

    短いバージョン:暗黙の日付変換やNLS日付形式マスクに依存しないでください。




    1. MySQLで現在の行と前の行の時間差を計算する方法

    2. このコンテキストではjson_aggを理解していません

    3. MySQLに中国語の文字を挿入できません

    4. VB6アプリケーションオラクル1264ビット接続