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

Oracleで日付をフォーマットする方法

    この記事には、OracleDatabaseでの日付のフォーマットの一般的な例が含まれています。

    セッションのデフォルトの日付形式は、さまざまなNLS初期化パラメーターによって決定されます(これらを確認する方法は次のとおりです)。これらのパラメータを利用して、ロケール対応のフォーマットを出力できます。

    TO_CHAR(number)などの関数を使用することもできます 日付を文字列に変換し、その場で好きなようにフォーマットします。

    デフォルトの日付形式

    Oracleで日付を返す場合、デフォルトでは、現在のセッションのデフォルトの日付形式で返されます。

    例:

    SELECT DATE '2030-12-10' FROM DUAL;

    結果:

    10/DEC/30

    この場合、私のセッションのデフォルトの日付形式はDD/MON/RRです。 、したがって、結果はそれを反映しています。

    NLS_TERRITORYを変更することで、形式を変更できます。 パラメータ(日時パラメータなどの他のパラメータを暗黙的に変更する)、またはNLS_DATE_FORMATを変更する パラメータを直接。

    NLS_TERRITORYを変更するとどうなりますか 別の地域へのパラメータ:

    ALTER SESSION SET NLS_TERRITORY = 'Germany';
    SELECT DATE '2030-12-10' FROM DUAL;

    結果:

    10.12.30

    デフォルトの日付形式は、そのロケールの形式を反映するように更新されました。

    NLS_TIME_FORMATなど、他の日時NLSパラメータもあります。 、NLS_TIME_TZ_FORMATNLS_TIMESTAMP_FORMAT 、および NLS_TIMESTAMP_TZ_FORMAT 日時の形式を変更するときは注意する必要があります。

    現在のセッションのデフォルトの日付形式を変更する場合は、「セッションの日付形式を変更する方法」も参照してください。

    TO_CHAR() 機能

    T 彼はTO_CHAR(datetime) 関数は日時値を受け入れ、指定した方法でフォーマットされた文字列を返します。

    簡単な例を次に示します。

    SELECT TO_CHAR(
        DATE '2035-09-26', 
        'Dy, DD Month YYYY'
        )
    FROM DUAL;

    結果:

    Wed, 26 September 2035

    ここで、関数は、最初の引数で指定された日付を、2番目の引数で指定された形式で返しました。

    2番目の引数は、フォーマットモデルを提供します。フォーマットモデルは、1つ以上のフォーマット要素で構成できます。たとえば、Dy DDと同様に、はフォーマット要素です。 、Month 、など。

    形式を指定しない場合は、セッションのデフォルトの形式を使用して返されます。

    この関数で日時値をフォーマットするために使用できるフォーマット要素のリストについては、Oracleの日時フォーマット要素の完全なリストを参照してください。

    以下はより具体的な例です。

    曜日の名前を返す

    必要に応じて、個々の日付パーツを返品できます。たとえば、日名だけ、月名だけを返すことができます。必要なのは、フォーマットモデルの唯一のフォーマット要素として該当するフォーマット要素を使用することだけです。

    曜日名を返す例は次のとおりです:

    SELECT TO_CHAR(DATE '2035-09-26', 'Day')
    FROM DUAL;

    結果:

    Wednesday

    この場合、私は完全な日の名前を返しました。

    Dyを使用できます 前の例のように、短い日の名前を返します:

    SELECT TO_CHAR(DATE '2035-09-26', 'Dy')
    FROM DUAL;

    結果:

    Wed

    月の名前を返す

    月の名前を返す例を次に示します。

    SELECT TO_CHAR(DATE '2035-09-26', 'Month')
    FROM DUAL;

    結果:

    September

    そして短い月の名前:

    SELECT TO_CHAR(DATE '2035-09-26', 'Mon')
    FROM DUAL;

    結果:

    September

    大文字と小文字の区別

    前の例では、日と月の名前の最初の文字を大文字にしました。

    または、すべて大文字を使用して曜日と月の名前を大文字で返し、すべて小文字を使用して小文字で返すこともできます。

    SELECT 
        TO_CHAR(DATE '2035-09-26', 'DY, Dy, dy')
    FROM DUAL
    UNION ALL
    SELECT 
        TO_CHAR(DATE '2035-09-26', 'DAY, Day, day')
    FROM DUAL
    UNION ALL
    SELECT 
        TO_CHAR(DATE '2035-09-26', 'MON, Mon, mon')
    FROM DUAL
    UNION ALL
    SELECT 
        TO_CHAR(DATE '2035-09-26', 'MONTH, Month, month')
    FROM DUAL;

    結果:

    WED, Wed, wed                           
    WEDNESDAY, Wednesday, wednesday         
    SEP, Sep, sep                           
    SEPTEMBER, September, september         

    言語

    NLS_DATE_LANGUAGE パラメータは、スペルアウトされる日付部分の言語(曜日名や月名など)を決定するために使用されます。このパラメータのデフォルト値は、NLS_LANGUAGEから派生しています。 パラメータ。

    NLS_DATE_LANGUAGEを更新する例を次に示します。 パラメータを入力し、曜日名と月名を含むフォーマットされた日付を返します:

    ALTER SESSION SET NLS_DATE_LANGUAGE = 'Spanish';
    SELECT TO_CHAR(DATE '2035-09-26', 'Dy, DD Month YYYY')
    FROM DUAL;

    結果:

    Mié, 26 Septiembre 2035

    言語は、TO_CHAR()内から明示的に指定することもできます。 関数自体。これにより、現在のセッションのデフォルトの言語設定を、それらの設定に影響を与えることなく一時的に上書きできます。

    例:

    ALTER SESSION SET NLS_DATE_LANGUAGE = 'English';
    SELECT TO_CHAR(
        DATE '2035-09-26', 
        'Dy, DD Month YYYY',
        'NLS_DATE_LANGUAGE = Spanish'
        )
    FROM DUAL;

    結果:

    Mié, 26 Septiembre 2035

    この例では、現在のセッションを英語を使用するように設定してから、クエリを実行してスペイン語を使用して日付を出力しました。

    以前にほのめかしたように、スペイン語で日付を出力しても、英語の設定には影響しませんでした。これを示すために、その直後に次のクエリを実行しました(NLS_DATE_LANGUAGEを変更せずに) パラメータ)。

    SELECT TO_CHAR(
        DATE '2035-09-26', 
        'Dy, DD Month YYYY'
        )
    FROM DUAL;

    結果:

    Wed, 26 September 2035

    予想どおり、結果は現在のセッションのデフォルト言語である英語になります。


    1. MariaDB LENGTH()とLENGTHB():違いは何ですか?

    2. クエリによって返された行ごとにストアドプロシージャを1回実行するにはどうすればよいですか?

    3. データセットをディープコピーし、すべてのコピーを指すようにFK参照を変更するにはどうすればよいですか?

    4. Oracle Pivotクエリは、列名を引用符で囲んだ列を提供します。何?