Oracle SQL 関数 : TO_CHAR(日付) : 日付の文字列変換

 stringRet := TO_CHAR( dateSrc [ , stringFormat [ , nlsParam ] ] );

 TO_CHARは日付データdateSrcを日付書式stringFormatに従ってVARCHAR2型のデータを返します。
  stringFormatを指定しない場合はデフォルトの日付書式に従います。
  nlsParamは月、日の名称及び略称の言語を指定します。

 通常の処理でよく使用する書式文字

日付書式文字 変換内容
D 曜日(1~7)
DD 日(1~31)
DDD 通年での日(1~366)
E 元号の略称
EE 元号
HH 時間(1~12)
HH24 時間(0~23)
MI 分(0~59)
MM 月(01~12)
YYYY
YY 年の下2桁

各書式文字の区切りとして"空白" "/" "-" "." "," ":" ";"の文字が許されています。

SQL> SELECT TO_CHAR(SYSDATE,'YYYY MM DD HH24 MI SS') FMSP,
  2         TO_CHAR(SYSDATE,'YYYY/MM/DD HH24/MI/SS') FMSL,
  3         TO_CHAR(SYSDATE,'YYYY.MM.DD HH24.MI.SS') FMDP,
  4         TO_CHAR(SYSDATE,'YYYY-MM-DD HH24-MI-SS') FMH,
  5         TO_CHAR(SYSDATE,'YYYY,MM,DD HH24,MI,SS') FMC,
  6         TO_CHAR(SYSDATE,'YYYY:MM:DD HH24:MI:SS') FMK,
  7         TO_CHAR(SYSDATE,'YYYY;MM;DD HH24;MI;SS') FMSK FROM DUAL;

FMSP                FMSL                FMDP                FMH                 FMC
------------------- ------------------- ------------------- ------------------- -------------------
FMK                 FMSK
------------------- -------------------
2002 11 17 15 35 59 2002/11/17 15/35/59 2002.11.17 15.35.59 2002-11-17 15-35-59 2002,11,17 15,35,59
2002:11:17 15:35:59 2002;11;17 15;35;59

TO_CHAR の対象として当然テーブルの中のカラムを指定できますので、例を以下に記します。

SQL> SELECT
  2     売上番号
  3   , TO_CHAR(売上日, 'YYYY/MM/DD') 売上日
  4   , TO_CHAR(売上日, 'YYYY/MM/DD HH24:MI:SS') 売上日2 FROM TT_売上;

  売上番号 売上日               売上日2
---------- -------------------- --------------------------------------
         1 2002/11/01           2002/11/01 00:00:00
         2 2002/11/03           2002/11/03 00:00:00
         3 2002/11/04           2002/11/04 00:00:00
         4 2002/11/13           2002/11/13 00:00:00
         5 2002/11/15           2002/11/15 00:00:00
         6 2002/11/15           2002/11/15 00:00:00
        10 2015/03/27           2015/03/27 00:00:00

7行が選択されました。


尚、対象データが NULL の場合はNULLが返されます。 (例を以下に記します。)

SQL> SELECT
  2     '/' || NVL(TO_CHAR(NULL, 'YYYY/MM/DD'), 'NULL') || '/'  "NULLテスト"
  3  FROM DUAL;

NULLテスト
------------
/NULL/