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: