Oracle Databaseでは、TO_CHAR(datetime) 関数は、日時または間隔の値をVARCHAR2に変換します 日付形式で指定された形式の値。
構文
構文は次のようになります:
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ]) 場所:
-
datetimeDATEの値にすることができます 、TIMESTAMP、TIMESTAMPWITHTIMEZONE、TIMESTAMPWITHLOCALTIMEZONEデータ型 intervalINTERVALの値にすることができますDAYTOSECOND、またはINTERVALYEARTOMONTHデータ型-
fmt結果のフォーマット方法を指定するオプションのフォーマットモデルです -
'nlsparam'月と日の名前と略語が返される言語を指定するオプションの引数です。
例
デモンストレーションの例を次に示します。
SELECT TO_CHAR(DATE '2035-09-26', 'DY, DD MONTH YYYY')
FROM DUAL; 結果:
WED, 26 SEPTEMBER 2035
そのため、最初の引数で指定された日付を、2番目の引数で指定された形式で返しました。
2番目の引数は、フォーマットモデルを提供します。フォーマットモデルは、1つ以上のフォーマット要素で構成できます。例:DY DDと同様に、はフォーマット要素です。 、MONTH 、など。
この関数で日時値をフォーマットするために使用できるフォーマット要素のリストについては、Oracleの日時フォーマット要素の完全なリストを参照してください。
デフォルトの形式
fmtを省略した場合 引数の場合、結果は次のように変換されます。
DATE値はデフォルトの日付形式の値に変換されます。-
TIMESTAMPおよびTIMESTAMPWITHLOCALTIMEZONE値は、デフォルトのタイムスタンプ形式の値に変換されます。 -
TIMESTAMPWITHTIMEZONE値は、タイムゾーン形式のデフォルトのタイムスタンプの値に変換されます。 - 間隔値は、間隔リテラルの数値表現に変換されます。
DATEを変換する例を次に示します。 形式を指定しない値:
SELECT TO_CHAR(DATE '2035-09-26')
FROM DUAL; 結果:
26/SEP/35
この場合、私のセッションのデフォルトの日付形式はDD/MON/RRです。 、したがって、結果はそれを反映しています。 V$NLS_PARAMETERSを照会したので、これが私のセッションのデフォルトの日付形式であることを知っています ビュー。NLSパラメータの現在の値が表示されます。
NLSパラメータの値を確認する必要がある場合は、それらの値を確認する方法を参照してください。
現在のセッションのデフォルトの日付形式を変更する場合は、「セッションの日付形式を変更する方法」も参照してください。
間隔
間隔値をデフォルトの形式で出力する例を次に示します。
SELECT TO_CHAR(INTERVAL '25-2' YEAR TO MONTH)
FROM DUAL; 結果:
+25-02
'nlsparam' 引数
'nlsparam' 引数は、月と日の名前と略語が返される言語を指定します。この引数の形式は次のとおりです。
'NLS_DATE_LANGUAGE = language' 例:
SELECT
TO_CHAR(
DATE '2035-09-26',
'DY, DD MONTH YYYY',
'NLS_DATE_LANGUAGE = SPANISH'
)
FROM DUAL; 結果:
MIÉ, 26 SEPTIEMBRE 2035
ヌル引数
nullを渡す 結果はnull :
SET NULL 'null';
SELECT TO_CHAR(null)
FROM DUAL; 結果:
null
デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。
ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。
引数がありません
引数を渡さずに関数を呼び出すと、エラーが発生します:
SELECT TO_CHAR()
FROM DUAL; 結果:
Error starting at line : 1 in command - SELECT TO_CHAR() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
あまりにも多くの引数を渡すと、エラーが発生します:
SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' )
FROM DUAL; 結果:
Error starting at line : 1 in command - SELECT TO_CHAR(DATE '2035-09-26', 'yy', 'NLS_DATE_LANGUAGE = spanish', 'oops!' ) FROM DUAL Error at Command Line : 1 Column : 72 Error report - SQL Error: ORA-00939: too many arguments for function 00939. 00000 - "too many arguments for function" *Cause: *Action: