I SQL Server returnerar T-SQL-funktionen DATENAME() en teckensträng som representerar den angivna datumdelen av det angivna datumet. Du kan till exempel skicka in 2021-01-07 och få SQL Server att returnera endast månadsdelen (January).

Returtypen för DATENAME() är nvarchar.

Exempel nedan.

Syntax

Syntaxen för DATENAME() ser ut så här:

DATENAME ( datepart , date )

Varvid datepart är den del av date (ett datum- eller tidsvärde) för vilken en teckensträng ska returneras.

Exempel 1

Här är ett grundläggande exempel där jag returnerar månadskomponenten från ett datum.

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

Resultat:

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

Exempel 2

I det här exemplet tilldelar jag ett datum till en variabel och använder sedan flera instanser av DATEPART() för att hämta olika delar av datumet.

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:

+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+

Exempel 3

Du kan också hämta de olika tidsdelarna från datumet.

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 |+--------+----------+----------+--------------+---------------+--------------+

Exempel 4

Du kan också hämta TZoffset och ISO_WEEK datumdelen.

Den TZoffset returneras som antal minuter (signerat). Datumdelen ISO_WEEK hänvisar till ISO-systemet för veckodatum (en del av ISO 8601-standarden) som är ett numreringssystem för veckor.

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 det här exemplet har jag ställt in datumet till ett datetimeoffset-format, vilket inkluderar tidszonförskjutningen. TZoffset returneras i minuter.

Resultaten från DATENAME() kommer ofta att likna resultaten från DATEPART() (på grund av att de flesta datumdelar är numeriska). DATEPART() returnerar dock ett heltal i stället för en teckensträng. Därför returnerar DATEPART() månader (och veckodagskomponenten) i numerisk form (t.ex. 1 i stället för January).

Hämtning av det korta månadsnamnet

Om du behöver månadsnamnet, men i dess förkortade form med tre bokstäver (t.ex. Jan i stället för January), kan du läsa min artikel 5 Ways to Get the Short Month Name from a Date in SQL Server.

Lämna ett svar

Din e-postadress kommer inte publiceras.