Nedenfor er to funktioner, der kan bruges til at returnere dagen fra en dato i Oracle Database.
EXTRACT()
Funktion
EXTRACT(datetime)
funktion bruges til at udtrække forskellige datetime dele fra en datetime værdi. Dette inkluderer dagen.
Her er et eksempel:
SELECT EXTRACT(DAY FROM DATE '2037-10-25')
FROM DUAL;
Resultat:
25
Det er DAY
søgeord, der udtrækker dagsdelen fra datoen. Vi kan få andre datodele ved at ændre det til det relevante søgeord. For eksempel YEAR
, MONTH
, HOUR
, MINUTE
osv.
Vi kan også bruge funktionen med andre datetime-værdier, såsom TIMESTAMP
osv.
TO_CHAR(datetime)
Funktion
Vi kan også bruge TO_CHAR(datetime)
fungere som en alternativ metode til at få dagen fra en dato.
Denne funktion accepterer datetime eller intervalværdien som sit første argument og en formatmodel som sit andet argument. Funktionen konverterer derefter værdien til en datatype VARCHAR2
i det angivne format.
Formatmodellen angiver det format, som dato/intervalværdien skal returneres for. Formatmodellen består af et eller flere formatelementer. Dette gør os i stand til omhyggeligt at udforme resultaterne, så de afspejler vores ønskede format.
Hvis vi kun ønsker at returnere dagen, kan vi bruge et af formatelementerne til at udtrække dagen.
Dag i måneden
For at få dagen i måneden (mellem 1-31), skal du bruge DD
formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'DD')
FROM DUAL;
Resultat:
03
Fulddagsnavn
Brug DAY
for at få hele dagens navn :
SELECT TO_CHAR(DATE '2037-10-03', 'DAY')
FROM DUAL;
Resultat:
SATURDAY
Navn på kort dag
Brug DY
for at få det forkortede dagnavn :
SELECT TO_CHAR(DATE '2037-10-03', 'DY')
FROM DUAL;
Resultat:
SAT
Årets dag
For at få årets dag (mellem 1-366), skal du bruge DDD
formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'DDD')
FROM DUAL;
Resultat:
276
Ugedag
Brug D
for at få ugedagen (mellem 1-7). formatelement:
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Resultat:
6
Dette formatelement afhænger af sessionens NLS-territorium. Værdien af mit systems NLS_TERRITORY
parameteren er AUSTRALIA
, og derfor anses lørdag for at være den sjette dag i ugen.
Her er, hvad der sker, hvis jeg ændrer værdien af min NLS_TERRITORY
parameter til AMERICA
og kør den samme forespørgsel igen:
ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
SELECT TO_CHAR(DATE '2037-10-03', 'D')
FROM DUAL;
Resultat:
7
Denne gang anses lørdag for at være den syvende dag i ugen.