In SQL Server retourneert de T-SQL functie DATENAME()
een tekenreeks die het gespecificeerde datadeel van de gespecificeerde datum weergeeft. U kunt bijvoorbeeld 2021-01-07
opgeven en SQL Server alleen het maandgedeelte (January
) laten retourneren.
Het retourneertype voor DATENAME()
is nvarchar.
Voorbeelden hieronder.
Syntax
De DATENAME()
-syntax gaat als volgt:
DATENAME ( datepart , date )
Waar datepart
het deel van date
is (een datum- of tijdwaarde) waarvoor een tekenreeks wordt geretourneerd.
Voorbeeld 1
Hier volgt een basisvoorbeeld waarin ik de maandcomponent van een datum retourneer.
SELECT DATENAME(month, '2021-01-07') AS Result;
Resultaat:
+----------+| Result ||----------|| January |+----------+
Voorbeeld 2
In dit voorbeeld wijs ik een datum toe aan een variabele, vervolgens gebruik ik meerdere instanties van DATEPART()
om verschillende delen van die datum op te halen.
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;
Resultaat:
+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+
Voorbeeld 3
Je kunt ook de verschillende tijdsdelen uit de datum halen.
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;
Resultaat:
+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+
Voorbeeld 4
U kunt ook het TZoffset
en het ISO_WEEK
datadeel ophalen.
De TZoffset
wordt geretourneerd als het aantal minuten (getekend). Het ISO_WEEK
datadeel verwijst naar het ISO week-datum systeem (onderdeel van de ISO 8601 standaard) dat een nummering systeem is voor weken.
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';
Resultaat:
+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+
In dit voorbeeld, stel ik de datum in op een datetimeoffset
formaat, dat de tijdzone afwijking bevat. De TZoffset
wordt geretourneerd in minuten.
De resultaten van DATENAME()
zullen vaak lijken op de resultaten van DATEPART()
(omdat de meeste datumgedeelten numeriek zijn). Echter, DATEPART()
retourneert een geheel getal in plaats van een tekenreeks. Daarom zal DATEPART()
maanden (en de weekdagcomponent) in numerieke vorm retourneren (bijv. 1
in plaats van January
).
De korte maandnaam ophalen
Als u de maandnaam nodig hebt, maar dan in de verkorte vorm met drie letters (bijv. Jan
in plaats van January
), bekijk dan mijn artikel 5 manieren om de korte maandnaam van een datum in SQL Server op te halen.