Oracleで日本語混じりの日付フォーマット

PL*SQLで日付の文字列を生成する必要があって「YYYY年MM月DD日(DY)」と出力したかったのですが、これが上手くいきません。

select to_char(sysdate, 'YYYY:MM:DD') from dual;

の結果は

2006:01:24

となるので同じ要領で
select to_char(sysdate, ‘YYYY年MM月DD日(DY)’) from dual;
とすると

ORA-01821: date format not recognized

と怒られます。
PHPだと

print date("Y年M月D日");

という書き方が出来るので同じような記述をしたいと思って奮闘していたのですが、オラクル得意の先輩が教えてくれました。正解は

select to_char(sysdate, 'YYYY"年"MM"月"DD"日("DY")"') from dual;

となります。ダブルクウォーテーションで囲うだけです。
文字列結合や型変換、フォーマットや正規表現など、各言語で翻訳しなければならないのでいつも忘れてしまいます。かといって膨大な対応表があっても鬱陶しいような気もしますので、結局覚えなければならないようです。(勿論、よく使うものはWikiなどに整理するのですが)

コメントする

メールアドレスが公開されることはありません。