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: