W SQL Server, funkcja T-SQL DATENAME() zwraca łańcuch znaków, który reprezentuje określoną część określonej daty. Na przykład, można przekazać 2021-01-07 i kazać SQL Server zwrócić tylko część miesiąca (January).

Typem zwrotu dla DATENAME() jest nvarchar.

Przykłady poniżej.

Syntaktyka

Składnia DATENAME() idzie tak:

DATENAME ( datepart , date )

Gdzie datepart jest częścią date (wartością daty lub czasu), dla której zostanie zwrócony ciąg znaków.

Przykład 1

Tutaj jest podstawowy przykład, w którym zwracam składową miesiąca z daty.

SELECT DATENAME(month, '2021-01-07') AS Result;

Result:

+----------+| Result ||----------|| January |+----------+

Przykład 2

W tym przykładzie przypisuję datę do zmiennej, a następnie używam wielu instancji DATEPART() do pobierania różnych części tej daty.

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;

Result:

+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+

Przykład 3

Możesz również pobrać różne części czasu z daty.

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;

Result:

+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+

Przykład 4

Można również pobrać część daty TZoffset i ISO_WEEK.

Część TZoffset jest zwracana jako liczba minut (podpisana). Część danych ISO_WEEK odnosi się do systemu dat tygodniowych ISO (część normy ISO 8601), który jest systemem numeracji tygodni.

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';

Result:

+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+

W tym przykładzie ustawiłem datę na format datetimeoffset, który zawiera przesunięcie strefy czasowej. Wartość TZoffset jest zwracana w minutach.

Wyniki DATENAME() często będą przypominać wyniki DATEPART() (z powodu tego, że większość części daty jest numeryczna). Jednakże DATEPART() zwraca liczbę całkowitą, a nie łańcuch znaków. Dlatego DATEPART() zwróci miesiące (i składnik dni tygodnia) w postaci numerycznej (np. 1 zamiast January).

Uzyskanie skróconej nazwy miesiąca

Jeśli potrzebujesz nazwy miesiąca, ale w jej skróconej, trzyliterowej postaci (np. Jan zamiast January), sprawdź mój artykuł 5 Ways to Get the Short Month Name from a Date in SQL Server.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.