Trong SQL Server, T-SQL DATENAME()
hàm trả về một chuỗi ký tự đại diện cho ngày tháng được chỉ định của ngày được chỉ định . Ví dụ:bạn có thể chuyển vào 2021-01-07
và yêu cầu SQL Server chỉ trả về phần tháng (January
).
Kiểu trả về cho DATENAME()
là nvarchar .
Ví dụ bên dưới.
Cú pháp
DATENAME()
cú pháp như sau:
DATENAME ( datepart , date )
Nơi datepart
là một phần của date
(giá trị ngày hoặc giờ) mà một chuỗi ký tự sẽ được trả về.
Ví dụ 1
Dưới đây là một ví dụ cơ bản mà tôi trả về thành phần tháng từ một ngày.
SELECT DATENAME(month, '2021-01-07') AS Result;
Kết quả:
+----------+ | Result | |----------| | January | +----------+
Ví dụ 2
Trong ví dụ này, tôi chỉ định ngày cho một biến, sau đó tôi sử dụng nhiều phiên bản của DATEPART()
để truy xuất các phần khác nhau của ngày đó.
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;
Kết quả:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Ví dụ 3
Bạn cũng có thể truy xuất các phần thời gian khác nhau từ ngày.
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;
Kết quả:
+--------+----------+----------+--------------+---------------+--------------+ | Hour | Minute | Second | Millsecond | Microsecond | Nanosecond | |--------+----------+----------+--------------+---------------+--------------| | 8 | 24 | 14 | 311 | 311204 | 311204200 | +--------+----------+----------+--------------+---------------+--------------+
Ví dụ 4
Bạn cũng có thể truy xuất TZoffset
và ISO_WEEK
datepart.
TZoffset
được trả về dưới dạng số phút (đã ký). ISO_WEEK
datepart đề cập đến hệ thống ngày theo tuần ISO (một phần của tiêu chuẩn ISO 8601) là hệ thống đánh số cho các tuần.
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';
Kết quả:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 22 | +--------------------+------------+
Trong ví dụ này, tôi đặt ngày thành datetimeoffset
định dạng, bao gồm chênh lệch múi giờ. TZoffset
được trả lại sau vài phút.
Kết quả của DATENAME()
thường sẽ giống với kết quả từ DATEPART()
(do phần lớn ngày là số). Tuy nhiên, DATEPART()
trả về một số nguyên đối lập với một chuỗi ký tự. Do đó DATEPART()
sẽ trả về các tháng (và thành phần ngày trong tuần) ở dạng số (ví dụ:1
thay vì January
).
Lấy tên tháng ngắn
Nếu bạn cần tên tháng, nhưng ở dạng rút gọn, 3 chữ cái viết tắt của nó (ví dụ:Jan
thay vì January
), hãy xem bài viết của tôi 5 Cách để Lấy Tên Tháng Ngắn từ Ngày trong SQL Server.