日時式、日付型をフォーマットする、曜日、和暦を求める
⇒ 数値式をフォーマットする

TO_CHAR ( expr [, format [, nls_param]] )
TO_NCHAR ( expr [, format [, nls_param]] )
return [ string ]
TO_NCHAR 関数は TO_CHAR 関数の戻り値を各国語キャラクタセット NCHAR としたもの

- フォーマット書式に従って変換された文字列、または、データベースキャラクタセット文字列

日付書式のフォーマット文字列
各国語サポートパラメータ
NLS_CALENDAR についてはグローバリゼーション・サポート・ガイド参照
| nls_param の種類 | 設定例 |
| NLS_DATE_LANGUAGE | ENGLISH |
| NLS_CALENDAR | 'JAPANESE IMPERIAL'(要クォート) |
日付のフォーマット使用例
DATE 型のデフォルトの書式は NLS_DATE_FORMAT でフォーマットされる。TIMESTAMP 型は NLS_TIMESTAMP_FORMAT。タイムゾーン付きの場合には NLS_TIMESTAMP_TZ_FORMAT によってフォーマットされる。
TO_CHAR( DATE '2005-06-07', 'RRMMDD') ⇒ '050607'
日付と時刻のフォーマット使用例
TO_CHAR ( TIMESTAMP '2000-01-02 04:05:06', 'YYYY/MM/DD HH24:MI:SS DAY')
⇒ 2000/01/02 04:05:06 日曜日
日付に関する豆知識
曜日を求める
TO_CHAR 関数で曜日を取得することも可能(和名、または、英名)
曜日を取得するには 書式指定に 'DAY' を指定する。
日本の曜日はすべて同じ長さなので関係ないが、英語の曜日には一番長い 'Wednesday' の長さにあわせるために空白が付けられている。
TO_CHAR( SYSDATE, 'Day', 'NLS_DATE_LANGUAGE = ENGLISH') ⇒ 'Friday___'
TO_CHAR( SYSDATE, 'Day') ⇒ '金曜日'
指定の日付の年号名を取得する NAME_OF_ERA ファンクション
デフォルトではシステム日付における年号を戻す。
CREATE OR REPLACE FUNCTION RIVUS.NAME_OF_ERA(
P_BASEDATE IN DATE := SYSDATE)
RETURN VARCHAR2 IS
BEGIN
RETURN TO_CHAR(P_BASEDATE, 'EE', 'NLS_CALENDAR=''JAPANESE IMPERIAL''');
END;
/
和暦表示を行なう
年号を取得する
SQL> select to_char(sysdate , 'EE', 'nls_calendar=''japanese imperial''') era
2 from dual;
ERA
------------------------------------------------------------
平成
和暦で表示する
SQL> select to_char(date '1900-01-01', 'eedl', 'nls_calendar=''japanese imperial''')
2 from dual;
TO_CHAR(DATE'1900-01-01','EEDL','NLS_CALEN
------------------------------------------
明治33年1月1日 月曜日
SQL 関数 - TO_CHAR 関連
関連事項