Oracle 日付書式で和暦・曜日・月を求める

Oracleで日付書式で和暦・曜日・月を求める方法です。TO_CHAR関数を利用します。

Oracle TO_CHAR 日付書式で和暦・曜日・月を求める

TO_CHARとは、Oracleで数値、日付、MLSLABEL 値を文字型に変換する関数です。SQL や PL/SQL で利用できます。各国語キャラセット(NVARCHAR2型)を返す TO_NCHAR関数というものもあります。使い方はどちらも同じですが、戻り値が違いますので注意しましょう。

ここでは TO_CHARで日付を変換した場合の使い方 をご紹介します。


TO_CHARの文法

まずはTO_CHARの文法をおさえておきましょう。

TO_CHAR ( n [ , fmt [ , ' nlsparams ' ] ] )
n:日付式や文字列式
fmt:日付書式の文字列
nlsparams:各国語サポートパラメータ(シングルクォートが必要)
戻り値:文字型

下表は SYSDATE=2015/08/28 16:45:10 とした場合のサンプル値です。

書式サンプル値使い方説明
EYYH27to_char(sysdate,'EYY','nls_calendar=''Japanese Imperial''')和暦略称
EEYY平成27to_char(sysdate,'EEYY','nls_calendar=''Japanese Imperial''')和暦
YYYY2015to_char(sysdate,'YYYY')西暦(4桁)
YYY015to_char(sysdate,'YYY')西暦(3桁)
YY15to_char(sysdate,'YY')西暦(2桁)
Y5to_char(sysdate,'Y')西暦(1桁)
MM08to_char(sysdate,'MM')
MON8月 to_char(sysdate,'MON')月(日本語)
後ろにスペース付加
MONAUGto_char(sysdate,'MON','nls_date_language=''AMERICAN''')月(英語)
DYto_char(sysdate,'DY')曜日略称(日本語)
DYFRIto_char(sysdate,'DY','nls_date_language=''AMERICAN''')曜日略称(英語)
DAY金曜日to_char(sysdate,'DAY')曜日(日本語)
DAYFRIDAY to_char(sysdate,'DAY','nls_date_language=''AMERICAN''')曜日(英語)
後ろにスペース付加
DD28to_char(sysdate,'DD')
HH04to_char(sysdate,'HH')12時間表記
HH2416to_char(sysdate,'HH24')24時間表記
AM午後to_char(sysdate,'AM')午前・午後(日本語)
AMPMto_char(sysdate,'AM','nls_date_language=''AMERICAN''')午前・午後(英語)
MI45to_char(sysdate,'MI')
SS10to_char(sysdate,'SS')
WW35to_char(sysdate,'WW')年初めからの週
W4to_char(sysdate,'W')月初からの週
D6to_char(sysdate,'D')週初めからの日数
DDD240to_char(sysdate,'DDD')年初めからの日数
SSSSS60310to_char(sysdate,'SSSSS')日にち初めからの秒数

以下の SQL を実行すれば、上記の結果が得られます。

select to_char(sysdate,'YYYY/MM/DD HH24:MI:SS') from dual
union all
select to_char(sysdate,'EYY','nls_calendar=''Japanese Imperial''') from dual
union all
select to_char(sysdate,'EEYY','nls_calendar=''Japanese Imperial''') from dual
union all
select to_char(sysdate,'YYYY') from dual
union all
select to_char(sysdate,'YYY') from dual
union all
select to_char(sysdate,'YY') from dual
union all
select to_char(sysdate,'Y') from dual
union all
select to_char(sysdate,'MM') from dual
union all
select to_char(sysdate,'MON') from dual
union all
select to_char(sysdate,'MON','nls_date_language=''AMERICAN''') from dual
union all
select to_char(sysdate,'DY') from dual
union all
select to_char(sysdate,'DY','nls_date_language=''AMERICAN''') from dual
union all
select to_char(sysdate,'DAY') from dual
union all
select to_char(sysdate,'DAY','nls_date_language=''AMERICAN''') from dual
union all
select to_char(sysdate,'DD') from dual
union all
select to_char(sysdate,'HH') from dual
union all
select to_char(sysdate,'HH24') from dual
union all
select to_char(sysdate,'AM') from dual
union all
select to_char(sysdate,'AM','nls_date_language=''AMERICAN''') from dual
union all
select to_char(sysdate,'MI') from dual
union all
select to_char(sysdate,'SS') from dual
union all
select to_char(sysdate,'WW') from dual
union all
select to_char(sysdate,'W') from dual
union all
select to_char(sysdate,'D') from dual
union all
select to_char(sysdate,'DDD') from dual
union all
select to_char(sysdate,'SSSSS') from dual

まとめ

Oracle TO_CHARで日付を変換した場合の使い方を紹介しました。

Oracleの日付書式の指定方法は色々あります。ここに掲載されていないものもあると思います。間違いや他の使い方などがあればコメントもらえるとうれしいです。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。