sql >> Databasteknik >  >> RDS >> Oracle

NEXT_DAY() Funktion i Oracle

I Oracle Database, NEXT_DAY() funktion returnerar datumet för den första instansen av den angivna veckodagen som är senare än det angivna datumet.

Syntax

Syntaxen ser ut så här:

NEXT_DAY(date, char)

Där date är datumet och char är den angivna veckodagen.

char argumentet måste vara en veckodag på datumspråket för den aktuella sessionen, antingen det fullständiga namnet eller förkortningen. Det minsta antalet bokstäver som krävs är antalet bokstäver i den förkortade versionen. Alla tecken omedelbart efter den giltiga förkortningen ignoreras.

Exempel

Här är ett exempel:

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

Resultat:

   Next Friday 
______________ 
05-OCT-35     

Vardagsförkortningar

I exemplet ovan används hela veckodagsnamnet. I följande exempel använder jag istället förkortningen:

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

Resultat:

   Next Friday 
______________ 
05-OCT-35     

Hur som helst är resultatet detsamma.

Faktum är att så länge som den första delen av argumentet innehåller en giltig veckodagsförkortning, kommer funktionen att returnera datumet för följande veckodag som matchar den förkortningen. Alla tecken omedelbart efter den giltiga förkortningen ignoreras. Så även om hela argumentet faktiskt inte är ett giltigt veckodagsnamn, så länge som den första delen är en giltig veckodagsförkortning, kommer det att returnera ett resultat för den veckodagen.

Exempel:

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;

Resultat:

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

Språkinställningar

Som nämnts måste veckodagen eller dess förkortning vara en veckodag på datumspråket för den aktuella sessionen.

Det här är vad som händer när jag ändrar min sessions språk och sedan försöker köra samma exempel igen:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

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

Resultat:

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

I det här fallet är mitt språk spanska, så vi måste tillhandahålla veckodagen på spanska:

ALTER SESSION SET NLS_LANGUAGE = 'Spanish';

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

Resultat:

   Next Friday 
______________ 
05-OCT-35     

Nollargument

Om något av argumenten är null , resultatet är 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;

Resultat:

      1       2 
_______ _______ 
null    null   

Som standard returnerar SQLcl och SQL*Plus ett tomt utrymme när null uppstår som ett resultat av en SQL SELECT påstående.

Du kan dock använda SET NULL för att ange en annan sträng som ska returneras. Här specificerade jag att strängen null bör returneras.

Argument saknas

Ringer NEXT_DAY() med fel antal argument, eller utan att skicka några argument, resulterar i ett fel:

SELECT NEXT_DAY()
FROM DUAL;

Resultat:

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. Datageneratorer för SQL-server?

  2. SQL-fråga för att hitta den sista dagen i månaden

  3. Lista över territorier som stöds av Oracle Database

  4. De 50 bästa SQL Server-intervjufrågorna du måste förbereda 2022