V SQL Serveru vrací funkce T-SQL DATENAME()znakový řetězec, který představuje zadanou část zadaného data. Můžete například zadat 2021-01-07 a SQL Server vrátí pouze část měsíce (January).

Typ vrácení pro DATENAME() je nvarchar.

Příklady níže.

Syntaxe

Syntaxe DATENAME() vypadá takto:

DATENAME ( datepart , date )

Kde datepart je část date (hodnota data nebo času), pro kterou bude vrácen znakový řetězec.

Příklad 1

Tady je základní příklad, kde vracím složku 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 do proměnné a pak použiji více instancí DATEPART() pro získání 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

Z data můžete také získat různé časové části.

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část data.

Část TZoffset je vrácena jako počet minut (podepsaných). Část data ISO_WEEK odkazuje na systém ISO týden-datum (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 formát datetimeoffset, který zahrnuje posunutí časového pásma. Výsledek TZoffset je vrácen v minutách.

Výsledky DATENAME() se budou často podobat výsledkům DATEPART() (vzhledem k tomu, že většina částí data je číselná). Nicméně DATEPART() vrací 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í zkráceného názvu měsíce

Pokud potřebujete název měsíce, ale v jeho zkrácené, třípísmenné podobě zkratky (např. Jan místo January), přečtěte si můj článek 5 způsobů, jak získat zkrácený název měsíce z data v SQL Serveru.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.