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

sysdateでのto_date関数の問題

    異なる結果が得られる理由を説明したいと思います。

    このsqlfiddleを参照してください

    すでに述べたように、sysdateはDATEと見なされます タイプすると、暗黙の変換を実行します

    select to_date(sysdate, format) from dual;
    

    to_dateの最初のパラメータはvarcharタイプである必要があるため、システムは次のように動作します。

    select to_date(to_char(sysdate), format) from dual;
    

    暗黙の日付形式は'DD-MON-YY'であるため 、クエリは次のようになります:

    SELECT TO_CHAR(to_date('01-JAN-13', 'DD-MON-yy'), 'DAY'),
      TO_CHAR(to_date('01-JAN-13', 'DD-MON-yyyy'), 'DAY'),
      TO_CHAR(to_date('01-JAN-13', 'DD-MON-rr'), 'DAY'),
      TO_CHAR(to_date('01-JAN-13', 'DD-MON-rrrr'), 'DAY')
    FROM dual;
    

    yyyyであるため、2番目のto_date は完全な千年形式で、13ADでおそらく日曜日である「01-JAN-0013」に移動します:)



    1. 最高のPostgreSQLGUIはどれですか? 2021年の比較

    2. MySQLでJSON列をクエリする方法

    3. Django:月ごとのクエリグループ

    4. MySQLの名前変更列