Nedan finns två funktioner som kan användas för att returnera dagen från ett datum i Oracle Database.
EXTRACT()
Funktion
EXTRACT(datetime)
Funktionen används för att extrahera olika datetime-delar från ett datetime-värde. Detta inkluderar dagen.
Här är ett exempel:
SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL;
Resultat:
25
Det är DAY
nyckelord som extraherar dagdelen från datumet. Vi kan få andra datumdelar genom att ändra det till det relevanta sökordet. Till exempel YEAR
, MONTH
, HOUR
, MINUTE
, etc.
Vi kan också använda funktionen med andra datetime-värden, såsom TIMESTAMP
, etc.
TO_CHAR(datetime)
Funktion
Vi kan också använda den TO_CHAR(datetime)
fungera som en alternativ metod för att få dagen från ett datum.
Den här funktionen accepterar datetime- eller intervallvärdet som dess första argument och en formatmodell som dess andra argument. Funktionen konverterar sedan värdet till en datatyp VARCHAR2
i det angivna formatet.
Formatmodellen anger formatet som datum/intervallvärdet ska returneras för. Formatmodellen består av ett eller flera formatelement. Detta gör det möjligt för oss att noggrant utforma resultaten för att återspegla vårt önskade format.
Om vi bara vill returnera dagen kan vi använda ett av formatelementen för att extrahera dagen.
Dag i månaden
För att få dagen i månaden (mellan 1-31), använd DD
formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL;
Resultat:
03
Heldagsnamn
För att få hela dagens namn, använd DAY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL;
Resultat:
SATURDAY
Short Day Name
För att få det förkortade dagsnamnet, använd DY
:
SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL;
Resultat:
SAT
Årets dag
För att få årets dag (mellan 1-366), använd DDD
formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL;
Resultat:
276
Veckodag
För att få veckodag (mellan 1-7), använd D
formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Resultat:
6
Detta formatelement beror på sessionens NLS-territorium. Värdet på mitt systems NLS_TERRITORY
parametern är AUSTRALIA
, och därför anses lördag vara den sjätte dagen i veckan.
Så här händer om jag ändrar värdet på min NLS_TERRITORY
parameter till AMERICA
och kör samma fråga igen:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Resultat:
7
Den här gången anses lördagen vara den sjunde dagen i veckan.