In SQL Server is de T-SQL DATENAME()
functie retourneert een tekenreeks die het opgegeven datepart vertegenwoordigt van de opgegeven datum . U kunt bijvoorbeeld doorgeven in 2021-01-07
en laat SQL Server alleen het maandgedeelte retourneren (January
).
Het retourtype voor DATENAME()
is nvarchar .
Voorbeelden hieronder.
Syntaxis
De DATENAME()
syntaxis gaat als volgt:
DATENAME ( datepart , date )
Waar datepart
is het deel van date
(een datum- of tijdwaarde) waarvoor een tekenreeks wordt geretourneerd.
Voorbeeld 1
Hier is een eenvoudig voorbeeld waarbij ik de maandcomponent van een datum terugstuur.
SELECT DATENAME(month, '2021-01-07') AS Result;
Resultaat:
+----------+ | Result | |----------| | January | +----------+
Voorbeeld 2
In dit voorbeeld wijs ik een datum toe aan een variabele, dan 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 de TZoffset
. ophalen en de ISO_WEEK
datepart.
De TZoffset
wordt geretourneerd als het aantal minuten (ondertekend). De ISO_WEEK
datepart verwijst naar het ISO-week-datumsysteem (onderdeel van de ISO 8601-standaard) dat een nummeringssysteem 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, inclusief de tijdzone-offset. De TZoffset
wordt binnen enkele minuten geretourneerd.
De resultaten van DATENAME()
zal vaak lijken op de resultaten van DATEPART()
(omdat de meeste datumdelen numeriek zijn). Echter, DATEPART()
retourneert een geheel getal in plaats van een tekenreeks. Daarom DATEPART()
retourneert maanden (en de weekdagcomponent) in numerieke vorm (bijv. 1
in plaats van January
).
De naam van de korte maand ophalen
Als u de naam van de maand nodig heeft, maar in de verkorte, drieletterige afkorting (bijvoorbeeld Jan
in plaats van January
), bekijk mijn artikel 5 manieren om de korte maandnaam van een datum in SQL Server te krijgen.