TO_CHARを使った日付のフォーマットで日本語の「年月日」を含む文字列を出力する
Oracleの関数「TO_CHAR」を使った日付のフォーマットで、日本語の「年月日」を含む文字列を出力する方法です。
最初は単純に「YYYY年MM月DD日」みたいな感じでやればいいだろうと思っていましたが、それはできませんでした。さすがはOracleです。
コード
まず、日本語を使わない場合の日付のフォーマットは以下のようになります。
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;
-------------------
2019-04-15
上記のSQLを実行して得られる出力結果は「2019-04-15」という文字列です。
この結果から、「-」と末尾に「年」「月」「日」を配置すればいいと思うのは仕方のないところで、実際に実行してみるとエラー「ORA-01821: 日付書式コードが無効です」が発生します。
SELECT TO_CHAR(SYSDATE, 'YYYY年MM月DD日') FROM DUAL;
-------------------
ORA-01821: 日付書式コードが無効です
01821. 00000 - "date format not recognized"
上記のエラーを回避して、日本語を含む形式にフォーマットするためには、以下のようにします。
SELECT TO_CHAR(SYSDATE, 'YYYY"年"MM"月"DD"日"') FROM DUAL;
-------------------
2019年04月15日
エラーが出たSQLからの変更点は、「年」「月」「日」の日本語部分をダブルクォーテーションで括っている点です。