日付をフォーマットされた日付文字列に変換する
以下の文では、TO_CHAR を使用して、$HOROLOG 日付整数または完全な $HOROLOG 文字列値を、フォーマットされた日付文字列または日付と時刻の文字列に変換します。
SELECT
TO_CHAR(66256,'YYYY-MM-DD') AS Date2FormattedDate,
TO_CHAR(66256,'YYYY-MM-DD HH24:MI:SS') AS Date2FormattedDateTime,
TO_CHAR('66256,50278','YYYY-MM-DD') AS DateTime2FormattedDate,
TO_CHAR('66256,50278','YYYY-MM-DD HH24:MI:SS') AS DateTime2FormattedDateTime
以下の文では、各 TO_CHAR 呼び出しは日付整数を取り、format 文字列引数に従ってフォーマットされた日付文字列を返します。
SELECT
TO_CHAR(66256,'MM/DD/YYYY'), /* returns 02/22/2018 */
TO_CHAR(66256,'DAY MONTH DD, YYYY') /* returns Thursday February 22, 2018 */
以下の文は、日付整数をフォーマットされた日付文字列に変換します。無効な format 文字は、リテラルとして出力文字列に渡されます。これは文字列 The date 05/27/2022 should be noted を返します。
SELECT TO_CHAR(66256,'The date MM/DD/YYYY should be noted')
以下の文は、日付式を、指定された年の 1 月 1 日からの経過日数として定義された、その年の日数に変換します。この構文を使用するには、日付式を $HOROLOG 形式にする必要があります。2 番目の TO_CHAR 呼び出しの時刻値は無視されます。2 つの TO_CHAR 呼び出しでは、年間通算日形式の要素 (DDD) と年要素 (YYYY および YY) は、異なる順序で表示されます。
SELECT
TO_CHAR('66235','DDD days into YYYY'),
TO_CHAR('66235,12345','Year YY: DDD days elapsed')
以下の文では、TO_CHAR は、セパレータをマイナス記号と解釈するため、正しくない日付値を返します。したがって、この式は 2022 – 5 – 2 = 2015 と評価されます。これは、$HOROLOG 整数形式で日付 1846-07–08 に対応します。
SELECT TO_CHAR(2022-05-02,'YYYY-MM-DD') -- Incorrect usage
時刻をフォーマットされた時刻文字列に変換する
以下の文では、'66256' が時刻値 05:58:21 PM と解釈されます。
SELECT TO_CHAR('64701','HH12:MI:SS PM')
以下の文では、2 つの論理タイムスタンプの時刻部分をフォーマットされた時刻文字列に変換します。format は秒の小数部をサポートしていないため、expression の秒の小数部は切り捨てられます。
SELECT TO_CHAR(SYSDATE,'HH12:MI:SS PM'),
TO_CHAR(CURRENT_TIMESTAMP(6),'HH12:MI:SS PM')
数をフォーマットされた数値文字列に変換する
以下の文は、数値 1000 をさまざまな桁数の形式コードの文字列に変換します。
-
最初の変換では、数値の桁数は、指定された桁の形式コードより多くなります。TO_CHAR は、数値の桁数に等しいシャープ記号を返します。
-
2 番目の変換では、数値の桁数は、指定された桁の形式コードと同じになります。TO_CHAR は、数値を文字列形式で返します。数値は符号なしの正の整数であるため、TO_CHAR は数値文字列の先頭にゼロを付加します。
-
3 番目の変換では、数値の桁数は、指定された桁の形式コードより少なくなります。TO_CHAR は、文字列形式で数値を返し、先頭に2 つのゼロを付加します。1 つは、数値が符号なしの正の整数であるため、もう 1 つは余分な桁の形式コード用です。
SELECT
TO_CHAR(1000,'999'), -- '####'
TO_CHAR(1000,'9999'), -- ' 1000'
TO_CHAR(1000,'99999') -- ' 1000'
以下の文は、区切り文字の使用例を示しています。
SELECT
TO_CHAR(1000,'9,999.99'),
TO_CHAR(1000,'9G999D99')
以下の文は、正の符号と負の符号の使用例を示しています。先頭の空白は、符号の形式がない場合に正の数の前にのみ表示されます。先頭の空白は、符号の配置にかかわらず、負の数の前、または符号付きの数値の前には表示されません。
SELECT
TO_CHAR(10,'99.99'), -- ' 10.00'
TO_CHAR(-10,'99.99'), -- '-10.00'
TO_CHAR(10,'S99.99'), -- '+10.00'
TO_CHAR(-10,'S99.99'), -- '-10.00'
TO_CHAR(10,'99.99S'), -- '10.00+'
TO_CHAR(-10,'99.99S') -- '10.00-'
以下の文は、"FM" 形式の使用例を示します。これは、符号なしの正の数に対し、既定の先頭の空白をオーバーライドします。
SELECT
TO_CHAR(12345678.90,'99,999,999.99'), -- ' 12,345,678,90'
TO_CHAR(12345678.90,'FM99,999,999.99') -- '12,345,678,90'
以下の文は、先頭のドル記号の使用例を示しています。ドル記号の前には必ず符号または空白文字が入ります。
SELECT
TO_CHAR(1234567890,'$9G999G999G999'), -- ' $1,234,567,890'
TO_CHAR(1234567890,'S$9G999G999G999'), -- '+$1,234,567,890'
TO_CHAR(12345678.90,'$99G999G999D99') -- ' $1,234,567,8.90'
以下の文は、format 引数が入力数値式より小数桁数が小さい場合の動作を示します。返される数字は、それぞれ、1234567.5 と 1234568 に丸められます。
SELECT
TO_CHAR(1234567.4999,'9999999.9'),
TO_CHAR(1234567.91,'9999999')