構文
to_char_date::=
用途
TO_CHAR
(日時)は、DATE
、TIMESTAMP
、TIMESTAMP
WITH
TIME
ZONE
、TIMESTAMP
WITH
LOCAL
TIME
ZONE
、INTERVAL
DAY
TO
SECOND
またはINTERVAL
YEAR
TO
MONTH
データ型の日時値または期間値を日付書式fmt
で指定された書式のVARCHAR2
データ型の値に変換します。fmt
を省略すると、次のように、date
はVARCHAR2
値に変換されます。
DATE
値は、デフォルトの日付書式の値に変換されます。
TIMESTAMP
およびTIMESTAMP
WITH
LOCAL
TIME
ZONE
値は、デフォルトのタイムスタンプ書式の値に変換されます。
TIMESTAMP
WITH
TIME
ZONE
値は、タイムゾーン書式のデフォルトのタイムスタンプの値に変換されます。
期間値は期間リテラルを数値で表現したものに変換されます。
日時書式の詳細は、「書式モデル」を参照してください。
'nlsparam'
引数には、月と日の名前および略称が戻される言語を指定します。この引数は、次の書式で指定します。
'NLS_DATE_LANGUAGE = language'
'nlsparam'
を指定しないと、このファンクションはセッションのデフォルト日付言語を使用します。
このファンクションは任意のXMLファンクションと組み合せて使用できますが、生成される日付の書式は、XMLスキーマの標準書式ではなく、データベースの書式になります。
関連項目:
|
例
次の例で使用する表は、次のとおりです。
CREATE TABLE date_tab ( ts_col TIMESTAMP, tsltz_col TIMESTAMP WITH LOCAL TIME ZONE, tstz_col TIMESTAMP WITH TIME ZONE);
次の例では、TO_CHAR
を別のTIMESTAMP
データ型に適用した結果を示します。TIMESTAMP
WITH
LOCAL
TIME
ZONE
列の結果は、セッションのタイムゾーンを識別します。これに対して、TIMESTAMP
およびTIMESTAMP
WITH
TIME
ZONE
列の結果は、セッションのタイムゾーンを識別しません。
ALTER SESSION SET TIME_ZONE = '-8:00'; INSERT INTO date_tab VALUES ( TIMESTAMP'1999-12-01 10:00:00', TIMESTAMP'1999-12-01 10:00:00', TIMESTAMP'1999-12-01 10:00:00'); INSERT INTO date_tab VALUES ( TIMESTAMP'1999-12-02 10:00:00 -8:00', TIMESTAMP'1999-12-02 10:00:00 -8:00', TIMESTAMP'1999-12-02 10:00:00 -8:00'); SELECT TO_CHAR(ts_col, 'DD-MON-YYYY HH24:MI:SSxFF') AS ts_date, TO_CHAR(tstz_col, 'DD-MON-YYYY HH24:MI:SSxFF TZH:TZM') AS tstz_date FROM date_tab ORDER BY ts_date, tstz_date; TS_DATE TSTZ_DATE ------------------------------ ------------------------------------- 01-DEC-1999 10:00:00.000000 01-DEC-1999 10:00:00.000000 -08:00 02-DEC-1999 10:00:00.000000 02-DEC-1999 10:00:00.000000 -08:00 SELECT SESSIONTIMEZONE, TO_CHAR(tsltz_col, 'DD-MON-YYYY HH24:MI:SSxFF') AS tsltz FROM date_tab ORDER BY sessiontimezone, tsltz; SESSIONTIM TSLTZ ---------- ------------------------------ -08:00 01-DEC-1999 10:00:00.000000 -08:00 02-DEC-1999 10:00:00.000000 ALTER SESSION SET TIME_ZONE = '-5:00'; SELECT TO_CHAR(ts_col, 'DD-MON-YYYY HH24:MI:SSxFF') AS ts_col, TO_CHAR(tstz_col, 'DD-MON-YYYY HH24:MI:SSxFF TZH:TZM') AS tstz_col FROM date_tab ORDER BY ts_col, tstz_col; TS_COL TSTZ_COL ------------------------------ ------------------------------------- 01-DEC-1999 10:00:00.000000 01-DEC-1999 10:00:00.000000 -08:00 02-DEC-1999 10:00:00.000000 02-DEC-1999 10:00:00.000000 -08:00 SELECT SESSIONTIMEZONE, TO_CHAR(tsltz_col, 'DD-MON-YYYY HH24:MI:SSxFF') AS tsltz_col FROM date_tab ORDER BY sessiontimezone, tsltz_col; 2 3 4 SESSIONTIM TSLTZ_COL ---------- ------------------------------ -05:00 01-DEC-1999 13:00:00.000000 -05:00 02-DEC-1999 13:00:00.000000
次の例では、期間リテラルをテキスト・リテラルに変換します。
SELECT TO_CHAR(INTERVAL '123-2' YEAR(3) TO MONTH) FROM DUAL; TO_CHAR ------- +123-02