I SQL Server kan du bruge DAY()
funktion for at returnere "dag"-delen af en dato. Denne funktion returnerer et heltal, der repræsenterer dagen i måneden (ikke ugedagen).
Nedenfor er eksempler på, hvordan du bruger denne funktion.
Syntaks
Syntaksen ser sådan ud:
DAY ( date )
Hvor date
er et udtryk, der løses til en af følgende datatyper:
- dato
- datotid
- datotidsforskydning
- datetime2
- smalldatetime
- tid
Dette kan være et kolonneudtryk, et udtryk, en streng-literal eller en brugerdefineret variabel.
Eksempel
Her er et grundlæggende eksempel på, hvordan det virker:
SELECT SYSDATETIME() AS 'Date', DAY(SYSDATETIME()) AS 'Day';
Resultat:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Så DAY()
funktion var i stand til at udtrække dagen fra datetime2 værdi (som blev returneret af SYSDATETIME()
funktion).
Dato angivet som en tekststreng
Her er et eksempel, hvor datoen er angivet som en bogstavelig streng.
SELECT DAY('2019-01-07') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
Og her er et eksempel, hvor datoen er angivet i et andet format:
SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Det er dog normalt bedst at undgå at bruge datoer i sådanne formater. Hvis du skal gøre det, skal du være opmærksom på sprogindstillingerne og/eller datoformatindstillingerne for den aktuelle session.
Sprogindstillinger
Outputtet fra det forrige eksempel vil afhænge af sprogindstillingerne og/eller datoformatindstillingerne for den aktuelle session.
Når vi indstiller sproget, indstilles datoformatet implicit på samme tid.
Her er, hvad der sker, når vi leverer det samme datoargument i to forskellige sprogmiljøer.
britisk
SET LANGUAGE British; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
us_engelsk
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Indstillinger for datoformat
Indstillingerne for datoformat kan tilsidesætte sprogindstillingerne, så du skal også være opmærksom på denne indstilling. For eksempel kan vi bruge us_engelsk for vores sprog (som har et standard datoformat på mdy ), men vi kunne tilsidesætte datoformatet til at være dmy .
Her er et eksempel:
us_English – Standard datoformat
Her indstiller vi sproget til us_engelsk , som implicit sætter datoformatet til myy .
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
us_English – Tilsidesæt datoformat
Her indstiller vi sproget til us_engelsk (som implicit sætter datoformatet), men så sætter vi eksplicit datoformatet til dmy . Dette tilsidesætter det datoformat, der implicit blev indstillet, da vi indstillede sproget.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT DAY('07/01/2017') AS Result;
Resultat:
+----------+ | Result | |----------| | 7 | +----------+
Returnér dagsnavnet
Hvis du har brug for at returnere dagnavnet (i modsætning til dagnummeret), se 3 måder at få dagnavnet på fra en dato i SQL Server.