Na serveru SQL Server T-SQL DATENAME()
funkce vrací znakový řetězec, který představuje zadanou část data zadaného data . Můžete například předat 2021-01-07
a SQL Server vrátí pouze část měsíce (January
).
Návratový typ pro DATENAME()
je nvarchar .
Příklady níže.
Syntaxe
DATENAME()
syntaxe vypadá takto:
DATENAME ( datepart , date )
Kde datepart
je součástí date
(hodnota data nebo času), pro kterou bude vrácen znakový řetězec.
Příklad 1
Zde je základní příklad, kdy vrátím komponentu měsíce z data.
SELECT DATENAME(month, '2021-01-07') AS Result;
Výsledek:
+----------+ | Result | |----------| | January | +----------+
Příklad 2
V tomto příkladu přiřadím datum proměnné a poté použiji více instancí DATEPART()
k načtení různých částí tohoto data.
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;
Výsledek:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Příklad 3
Můžete také načíst různé časové části z data.
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;
Výsledek:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Příklad 4
Můžete také načíst TZoffset
a ISO_WEEK
datepart.
TZoffset
se vrátí jako počet minut (podepsaný). ISO_WEEK
datepart odkazuje na systém týdenního data ISO (součást normy ISO 8601), což je systém číslování týdnů.
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';
Výsledek:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 22 | +--------------------+------------+
V tomto příkladu jsem nastavil datum na datetimeoffset
formát, který zahrnuje posun časového pásma. TZoffset
se vrátí za několik minut.
Výsledky DATENAME()
bude často připomínat výsledky z DATEPART()
(vzhledem k tomu, že většina částí data je číselná). Nicméně DATEPART()
vrátí celé číslo na rozdíl od řetězce znaků. Proto DATEPART()
vrátí měsíce (a složku dne v týdnu) v číselné podobě (např. 1
místo January
).
Získání názvu krátkého měsíce
Pokud potřebujete název měsíce, ale ve zkrácené třípísmenné zkratce (například Jan
místo January
), podívejte se na můj článek 5 způsobů, jak získat krátký název měsíce z data na serveru SQL.