TO_CHAR (日時)
構文
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スキーマの標準書式ではなく、データベースの書式になります。
関連項目:
-
XMLの日付およびタイムスタンプの書式設定とその例については、『Oracle XML DB開発者ガイド』を参照してください。
-
XMLファンクションのリストは、「XMLファンクション」を参照してください。
-
このファンクションの文字の戻り値に割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例で使用する表は、次のとおりです。
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
日付および数値の書式を設定するためのTO_CHARの使用: 例
次の文は、日付値をTO_CHAR
ファンクションで指定された形式に変換します。
WITH dates AS ( SELECT date'2015-01-01' d FROM dual union SELECT date'2015-01-10' d FROM dual union SELECT date'2015-02-01' d FROM dual ) SELECT d "Original Date", to_char(d, 'dd-mm-yyyy') "Day-Month-Year", to_char(d, 'hh24:mi') "Time in 24-hr format", to_char(d, 'iw-iyyy') "ISO Year and Week of Year" FROM dates;
次の文は、日付およびタイムスタンプの値をTO_CHAR
ファンクションで指定された形式に変換します。
WITH dates AS ( SELECT date'2015-01-01' d FROM dual union SELECT date'2015-01-10' d FROM dual union SELECT date'2015-02-01' d FROM dual union SELECT timestamp'2015-03-03 23:44:32' d FROM dual union SELECT timestamp'2015-04-11 12:34:56' d FROM dual ) SELECT d "Original Date", to_char(d, 'dd-mm-yyyy') "Day-Month-Year", to_char(d, 'hh24:mi') "Time in 24-hr format", to_char(d, 'iw-iyyy') "ISO Year and Week of Year", to_char(d, 'Month') "Month Name", to_char(d, 'Year') "Year" FROM dates;
次の文は、入力日時式から、EXTRACT
ファンクションで指定された日時フィールドを抽出します。
WITH dates AS ( SELECT date'2015-01-01' d FROM dual union SELECT date'2015-01-10' d FROM dual union SELECT date'2015-02-01' d FROM dual union SELECT timestamp'2015-03-03 23:44:32' d FROM dual union SELECT timestamp'2015-04-11 12:34:56' d FROM dual ) SELECT extract(minute from d) minutes, extract(hour from d) hours, extract(day from d) days, extract(month from d) months, extract(year from d) years FROM dates;
次の文は、TO_CHAR
ファンクションで指定された書式に従って入力番号を表示します。
WITH nums AS ( SELECT 10 n FROM dual union SELECT 9.99 n FROM dual union SELECT 1000000 n FROM dual --one million ) SELECT n "Input Number N", to_char(n), to_char(n, '9,999,999.99') "Number with Commas", to_char(n, '0,000,000.000') "Zero-padded Number", to_char(n, '9.9EEEE') "Scientific Notation" FROM nums;
次の文は、TO_CHAR
ファンクションで指定された書式に従って入力番号を変換します。
WITH nums AS ( SELECT 10 n FROM dual union SELECT 9.99 n FROM dual union SELECT .99 n FROM dual union SELECT 1000000 n FROM dual --one million ) SELECT n "Input Number N", to_char(n), to_char(n, '9,999,999.99') "Number with Commas", to_char(n, '0,000,000.000') "Zero_padded Number", to_char(n, '9.9EEEE') "Scientific Notation", to_char(n, '$9,999,990.00') Monetary, to_char(n, 'X') "Hexadecimal Value" FROM nums;
次の文は、TO_CHAR
ファンクションで指定された書式に従って入力番号を変換します。
WITH nums AS ( SELECT 10 n FROM dual union SELECT 9.99 n FROM dual union SELECT .99 n FROM dual union SELECT 1000000 n FROM dual --one million ) SELECT n "Input Number N", to_char(n), to_char(n, '9,999,999.99') "Number with Commas", to_char(n, '0,000,000.000') "Zero_padded Number", to_char(n, '9.9EEEE') "Scientific Notation", to_char(n, '$9,999,990.00') Monetary, to_char(n, 'XXXXXX') "Hexadecimal Value" FROM nums;
Live SQL:
日付および数値の書式を設定するためのTO_CHARの使用で、Oracle Live SQLに関連する例を参照および実行します
TO_CHAR (datetime)ファンクション: 例
次の文は、empl_temp
という名前の表を作成し、従業員の詳細を移入します。
CREATE TABLE empl_temp
(
employee_id NUMBER(6),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
email VARCHAR2(25),
hire_date DATE DEFAULT SYSDATE,
job_id VARCHAR2(10),
clob_column CLOB
);
INSERT INTO empl_temp
VALUES(111,'John','Doe','example.com','10-JAN-2015','1001','Experienced Employee');
INSERT INTO empl_temp
VALUES(112,'John','Smith','example.com','12-JAN-2015','1002','Junior Employee');
INSERT INTO empl_temp
VALUES(113,'Johnnie','Smith','example.com','12-JAN-2014','1002','Mid-Career Employee');
INSERT INTO empl_temp
VALUES(115,'Jane','Doe','example.com','15-JAN-2015','1005','Executive Employee');
次の文は、短い書式と長い書式を使用して日付を表示します。
SELECT hire_date "Default",
TO_CHAR(hire_date,'DS') "Short",
TO_CHAR(hire_date,'DL') "Long"FROM empl_temp
WHERE employee_id IN (111, 112, 115);
Default Short Long
---------- ---------- --------------------------
10-JAN-15 1/10/2015 Saturday, January 10, 2015
12-JAN-15 1/12/2015 Monday, January 12, 2015
15-JAN-15 1/15/2015 Thursday, January 15, 2015
Live SQL:
Oracle Live SQLのTO_CHARファンクションの使用で関連する例を参照して実行してください