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

Oracleの日付から文字列への変換

    COL1のデータはdd-mon-yyにあります

    いいえ、ちがいます。 DATE 列はしない 任意の形式があります。表示するときに、SQLクライアントによって(暗黙的に)その表現に変換されるだけです。

    COL1が実際にDATEである場合 to_date()を使用した列 to_date()なので、役に立たない 文字列をDATEに変換します。

    to_char()だけが必要で、他には何も必要ありません:

    SELECT TO_CHAR(col1, 'mm/dd/yyyy') 
    FROM TABLE1
    

    あなたの場合、to_date()を呼び出すとどうなりますか DATEを変換します 文字値に変換し(デフォルトのNLS形式を適用)、それをDATEに変換し直します。この二重の暗黙の変換により、途中で一部の情報が失われます。

    編集

    したがって、日付を文字列に格納するという大きな間違いを犯しました。そしてそれがあなたが今問題を抱えている理由です。

    最良の(そして正直に言うと、賢明な)解決策は、その列をDATEに変換することです。 。次に、暗黙的なデータ型変換を気にすることなく、値を任意の表現に変換できます。

    しかし、おそらく答えは「このモデルを継承したので、それに対処する必要があります」です。 "(常に、間違ったデータ型を選択する責任は誰にもありません)、RRを使用する必要があります YYの代わりに :

    SELECT TO_CHAR(TO_DATE(COL1,'dd-mm-rr'), 'mm/dd/yyyy')
    FROM TABLE1
    

    トリックを行う必要があります。 monも変更したことに注意してください mmへ あなたの例は27-11-89です 「単語」ではなく、その月の数字があります( NOV など) )

    詳細については、マニュアルを参照してください:http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements004.htm#SQLRF00215



    1. SQLServerプロセスキューの競合状態

    2. 自動インクリメントの開始番号を変更しますか?

    3. Rails3.2Postgres保存エラーActiveRecord::StatementInvalid:PG ::Error:ERROR:位置5の「T」付近の構文エラー

    4. SQLite JSON_EXTRACT()