В SQL Server, T-SQL DATENAME()
функцията връща символен низ, който представлява посочената част от дата на посочената дата . Например можете да подадете 2021-01-07
и SQL Server да върне само частта от месеца (January
).
Типът на връщане за DATENAME()
е nvarchar .
Примери по-долу.
Синтаксис
DATENAME()
синтаксисът е така:
DATENAME ( datepart , date )
Където datepart
е част от date
(стойност за дата или час), за която ще бъде върнат символен низ.
Пример 1
Ето един основен пример, при който връщам компонента месец от дата.
SELECT DATENAME(month, '2021-01-07') AS Result;
Резултат:
+----------+ | Result | |----------| | January | +----------+
Пример 2
В този пример присвоявам дата на променлива, след което използвам множество екземпляри на DATEPART()
за да извлечете различни части от тази дата.
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;
Резултат:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Пример 3
Можете също да извлечете различните части от времето от датата.
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;
Резултат:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Пример 4
Можете също да извлечете TZoffset
и ISO_WEEK
дата част.
TZoffset
се връща като брой минути (подписан). ISO_WEEK
datepart се отнася до системата за дата седмица на ISO (част от стандарта ISO 8601), която е система за номериране на седмици.
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';
Резултат:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 22 | +--------------------+------------+
В този пример зададох датата на datetimeoffset
формат, който включва изместването на часовата зона. TZoffset
се връща след минути.
Резултатите от DATENAME()
често ще прилича на резултатите от DATEPART()
(поради това, че повечето части от датата са числови). Въпреки това DATEPART()
връща цяло число за разлика от символен низ. Следователно DATEPART()
ще върне месеците (и компонента за деня от седмицата) в числова форма (напр. 1
). вместо January
).
Получаване на краткото име на месеца
Ако имате нужда от името на месеца, но в неговата съкратена форма за съкращение от 3 букви (например Jan
вместо January
), вижте моята статия 5 начина да получите краткото име на месеца от дата в SQL Server.