En Oracle Database, el NEXT_DAY()
La función devuelve la fecha de la primera instancia del día de la semana especificado que es posterior a la fecha especificada.
Sintaxis
La sintaxis es así:
NEXT_DAY(date, char)
Donde date
es la fecha y char
es el día de la semana especificado.
El char
El argumento debe ser un día de la semana en el idioma de la fecha de la sesión actual, ya sea el nombre completo o la abreviatura. El número mínimo de letras requeridas es el número de letras en la versión abreviada. Cualquier carácter inmediatamente después de la abreviatura válida se ignora.
Ejemplo
He aquí un ejemplo:
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Resultado:
Next Friday ______________ 05-OCT-35
Abreviaturas de días laborables
El ejemplo anterior utiliza el nombre completo del día de la semana. En el siguiente ejemplo, uso la abreviatura en su lugar:
SELECT NEXT_DAY('01-OCT-2035', 'FRI') AS "Next Friday"
FROM DUAL;
Resultado:
Next Friday ______________ 05-OCT-35
De cualquier manera, el resultado es el mismo.
De hecho, siempre que la primera parte del argumento contenga una abreviatura válida del día de la semana, la función devolverá la fecha del siguiente día de la semana que coincida con esa abreviatura. Cualquier carácter inmediatamente después de la abreviatura válida se ignora. Por lo tanto, incluso si todo el argumento no es realmente un nombre de día de la semana válido, siempre que la primera parte sea una abreviatura de día de la semana válida, devolverá un resultado para ese día de la semana.
Ejemplos:
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;
Resultado:
Next Monkey Next Thumbnail Next Friar Tuck ______________ _________________ __________________ 08-OCT-35 04-OCT-35 05-OCT-35
Configuración de idioma
Como se mencionó, el día de la semana o su abreviatura debe ser un día de la semana en el idioma de fecha de la sesión actual.
Esto es lo que sucede cuando cambio el idioma de mi sesión y luego intento ejecutar el mismo ejemplo nuevamente:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'FRIDAY') AS "Next Friday"
FROM DUAL;
Resultado:
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
En este caso, mi idioma es el español, por lo que debemos proporcionar el día de la semana en español:
ALTER SESSION SET NLS_LANGUAGE = 'Spanish';
SELECT NEXT_DAY('01-OCT-2035', 'viernes') AS "Next Friday"
FROM DUAL;
Resultado:
Next Friday ______________ 05-OCT-35
Argumentos nulos
Si alguno de los argumentos es null
, el resultado es 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;
Resultado:
1 2 _______ _______ null null
De forma predeterminada, SQLcl y SQL*Plus devuelven un espacio en blanco cada vez que null
ocurre como resultado de un SQL SELECT
declaración.
Sin embargo, puede usar SET NULL
para especificar una cadena diferente a devolver. Aquí especifiqué que la cadena null
debe ser devuelto.
Argumento faltante
Llamando a NEXT_DAY()
con el número incorrecto de argumentos, o sin pasar ningún argumento, da como resultado un error:
SELECT NEXT_DAY()
FROM DUAL;
Resultado:
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: