În SQL Server, funcția T-SQL DATENAME()
returnează un șir de caractere care reprezintă partea de dată specificată din data specificată. De exemplu, puteți trece 2021-01-07
și puteți face ca SQL Server să returneze numai partea de lună (January
).
Tipul de retur pentru DATENAME()
este nvarchar.
Exemplele de mai jos.
Sintaxa
Sintaxa DATENAME()
este următoarea:
DATENAME ( datepart , date )
Unde datepart
este partea din date
(o dată sau o valoare de timp) pentru care se va returna un șir de caractere.
Exemplu 1
Iată un exemplu de bază în care returnez componenta lună dintr-o dată.
SELECT DATENAME(month, '2021-01-07') AS Result;
Rezultat:
+----------+| Result ||----------|| January |+----------+
Exemplu 2
În acest exemplu atribui o dată unei variabile, apoi folosesc mai multe instanțe ale DATEPART()
pentru a prelua diferite părți din acea dată.
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;
Rezultat:
+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+
Exemplu 3
De asemenea, puteți prelua diferitele părți de timp din dată.
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;
Rezultat:
+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+
Exemplu 4
De asemenea, puteți prelua partea de dată TZoffset
și ISO_WEEK
.
Partea de dată TZoffset
și ISO_WEEK
.
Partea de dată TZoffset
este returnată ca număr de minute (semnate). Partea de dată ISO_WEEK
se referă la sistemul ISO week-date (parte a standardului ISO 8601), care este un sistem de numerotare pentru săptămâni.
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';
Rezultat:
+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+
În acest exemplu, am setat data într-un format datetimeoffset
, care include decalajul fusului orar. TZoffset
este returnat în minute.
Rezultatele din DATENAME()
vor semăna adesea cu rezultatele din DATEPART()
(datorită faptului că majoritatea părților datei sunt numerice). Cu toate acestea, DATEPART()
returnează un număr întreg, spre deosebire de un șir de caractere. Prin urmare, DATEPART()
va returna lunile (și componenta zilelor săptămânii) sub formă numerică (de exemplu, 1
în loc de January
).
Obținerea numelui scurt al lunii
Dacă aveți nevoie de numele lunii, dar în forma sa prescurtată, sub formă de abreviere de 3 litere (de exemplu, Jan
în loc de January
), consultați articolul meu 5 Ways to Get the Short Month Name from a Date in SQL Server.
.