I SQL Server returnerer T-SQL-funktionen DATENAME() en tegnstreng, der repræsenterer den angivne datodel af den angivne dato. Du kan f.eks. indtaste 2021-01-07 og få SQL Server til kun at returnere månedsdelen (January).

Returtypen for DATENAME() er nvarchar.

Eksempler nedenfor.

Syntaks

Syntaksen for DATENAME() lyder således:

DATENAME ( datepart , date )

Hvor datepart er den del af date (en dato- eller tidsværdi), som der returneres en tegnstreng for.

Eksempel 1

Her er et grundlæggende eksempel, hvor jeg returnerer månedskomponenten fra en dato.

SELECT DATENAME(month, '2021-01-07') AS Result;

Resultat:

+----------+| Result ||----------|| January |+----------+

Eksempel 2

I dette eksempel tildeler jeg en dato til en variabel, hvorefter jeg bruger flere forekomster af DATEPART() til at hente forskellige dele af den pågældende dato.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;

Resultat:

Eksempel 3

Du kan også hente de forskellige tidsdele fra datoen.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;

Resultat:

+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+

Eksempel 4

Du kan også hente datodelen TZoffset og ISO_WEEK.

Den TZoffset returneres som antallet af minutter (signeret). Datadelen ISO_WEEK henviser til ISO-uge-datosystemet (en del af ISO 8601-standarden), som er et nummereringssystem for uger.

DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';

Resultat:

+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+

I dette eksempel har jeg indstillet datoen til et datetimeoffset-format, som omfatter tidszoneforskydningen. TZoffset returneres i minutter.

Resultaterne af DATENAME() vil ofte ligne resultaterne fra DATEPART() (på grund af at de fleste datodele er numeriske). Men DATEPART() returnerer et heltal i stedet for en tegnstreng. Derfor returnerer DATEPART() måneder (og ugedagskomponenten) i numerisk form (f.eks. 1 i stedet for January).

Hentning af det korte månedsnavn

Hvis du har brug for månedsnavnet, men i den forkortede forkortelsesform med 3 bogstaver (f.eks. Jan i stedet for January), kan du læse min artikel 5 måder at hente det korte månedsnavn fra en dato i SQL Server.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.