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

OracleのNEXT_DAY()関数

    Oracle Databaseでは、NEXT_DAY() 関数は、指定された日付より後の指定された平日の最初のインスタンスの日付を返します。

    構文

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

    NEXT_DAY(date, char)

    date は日付であり、 char 指定された平日です。

    char 引数は、現在のセッションの日付言語の曜日(フルネームまたは省略形)である必要があります。必要な最小文字数は、短縮バージョンの文字数です。有効な略語の直後の文字はすべて無視されます。

    次に例を示します:

    SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
    FROM DUAL;

    結果:

       Next Friday 
    ______________ 
    05-OCT-35     

    平日の略語

    上記の例では、完全な平日の名前を使用しています。次の例では、代わりに略語を使用しています。

    SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
    FROM DUAL;

    結果:

       Next Friday 
    ______________ 
    05-OCT-35     

    いずれにせよ、結果は同じです。

    実際、引数の最初の部分に有効な平日の省略形が含まれている限り、関数はその省略形に一致する次の平日の日付を返します。有効な略語の直後の文字はすべて無視されます。したがって、引数全体が実際には有効な平日の名前でなくても、最初の部分が有効な平日の省略形である限り、その平日の結果が返されます。

    例:

    SELECT 
        NEXT_DAY('01-OCT-2035','Monkey') AS "Next Monkey",
        NEXT_DAY('01-OCT-2035','Thumbnail') AS "Next Thumbnail",
        NEXT_DAY('01-OCT-2035','Friar Tuck') AS "Next Friar Tuck"
    FROM DUAL;

    結果:

       Next Monkey    Next Thumbnail    Next Friar Tuck 
    ______________ _________________ __________________ 
    08-OCT-35      04-OCT-35         05-OCT-35         

    言語設定

    前述のように、平日またはその省略形は現在のセッションの日付言語の曜日である必要があります。

    セッションの言語を変更してから、同じ例をもう一度実行してみると、次のようになります。

    ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
    
    SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
    FROM DUAL;

    結果:

    Session alterado.
    
    
    Error que empieza en la línea: 1 del comando :
    SELECT NEXT_DAY('01-OCT-2035','FRIDAY') AS "Next Friday"
    FROM DUAL
    Informe de error -
    ORA-01846: día de la semana no válido

    この場合、私の言語はスペイン語なので、平日はスペイン語で提供する必要があります:

    ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
    
    SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
    FROM DUAL;

    結果:

       Next Friday 
    ______________ 
    05-OCT-35     

    ヌル引数

    いずれかの引数がnullの場合 、結果はnullです :

    ALTER SESSION SET NLS_LANGUAGE = 'AMERICAN';
    SET NULL 'null';
    
    SELECT
        NEXT_DAY(null, 'FRIDAY') AS "1",
        NEXT_DAY('01-OCT-2035', null) AS "2"
    FROM DUAL;

    結果:

          1       2 
    _______ _______ 
    null    null   

    デフォルトでは、SQLclおよびSQL * Plusは、nullの場合は常に空白を返します。 SQL SELECTの結果として発生します 声明。

    ただし、SET NULLは使用できます 返される別の文字列を指定します。ここでは、文字列nullを指定しました 返却する必要があります。

    引数がありません

    NEXT_DAY()を呼び出す 引数の数が間違っているか、引数を渡さないと、エラーが発生します:

    SELECT NEXT_DAY()
    FROM DUAL;

    結果:

    Error starting at line : 1 in command -
    SELECT NEXT_DAY()
    FROM DUAL
    Error at Command Line : 1 Column : 8
    Error report -
    SQL Error: ORA-00909: invalid number of arguments
    00909. 00000 -  "invalid number of arguments"
    *Cause:    
    *Action:

    1. Postgresでキーワードのような列名をエスケープする

    2. サーバーに接続できません-ネットワーク関連またはインスタンス固有のエラー

    3. Exists1またはExists*を使用したサブクエリ

    4. now()関数から時間を減算します