sql >> データベース >  >> RDS >> Oracle

OracleのTO_CHAR(datetime)関数

    Oracle Databaseでは、TO_CHAR(datetime) 関数は、日時または間隔の値をVARCHAR2に変換します 日付形式で指定された形式の値。

    構文

    構文は次のようになります:

    TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

    場所:

    • datetime DATEの値にすることができます 、TIMESTAMPTIMESTAMP WITH TIME ZONETIMESTAMP WITH LOCAL TIME ZONE データ型
    • interval INTERVALの値にすることができます DAY TO SECOND 、またはINTERVAL YEAR TO MONTH データ型
    • 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 およびTIMESTAMP WITH LOCAL TIME ZONE 値は、デフォルトのタイムスタンプ形式の値に変換されます。
    • TIMESTAMP WITH TIME ZONE 値は、タイムゾーン形式のデフォルトのタイムスタンプの値に変換されます。
    • 間隔値は、間隔リテラルの数値表現に変換されます。

    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:

    1. T-SQLの場合と同じように、PL / SQLで変数を宣言して使用するにはどうすればよいですか?

    2. 別のINSERTでINSERT...RETURNINGの戻り値を使用できますか?

    3. OracleSQL句の評価順序

    4. PHPを使用してMySQLデータベースをバックアップ/エクスポートする方法