26/11/2019, 17:54

[DATABASE] Hướng dẫn in danh sách tất cả các ngày theo khoảng từ ngày đến ngày

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ đến các bạn hàm trong Sqlserver để liệt kê danh sách các ngày trong khoảng thời gian chúng ta nhập vào. Ví dụ: bây giờ bạn muốn hiển thị danh sách tất cả các ngày từ 01/01/2019 đến 31/12/2019 Hàm dưới đây ...

Xin chào các bạn, bài viết hôm nay mình sẽ chia sẽ đến các bạn hàm trong Sqlserver để liệt kê danh sách các ngày trong khoảng thời gian chúng ta nhập vào.

Ví dụ: bây giờ bạn muốn hiển thị danh sách tất cả các ngày từ 01/01/2019 đến 31/12/2019

Hàm dưới đây sẽ hiển thị ra đầy đủ thông tin cho các bạn, thành một một bảng table để các bạn có thể dễ dàng xử lý.

Khi chúng ta nhập vào từ ngày 01/01/2019 đến 31/12/2019 chúng ta sẽ được danh sách trả về như hình bên dưới:

list_dateOfyear_sqlserver

Danh sách trả về bao gồm các bạn đầy đủ thông tin bao gồm: ngày, năm, tháng, ngày trong tháng, id thứ, thứ , tháng_text, ngày trong năm, quý, ngày đầu tiên của năm, ngày đầu tiên của tháng.

Code Print List Date Of Year SQLSERVER:

DECLARE @start_dt AS DATE='20190101';
DECLARE @end_dt AS DATE='20191231';
DECLARE @dates AS TABLE(date_id DATE PRIMARY KEY,
date_year SMALLINT,
date_month TINYINT,
date_day TINYINT,
weekday_id TINYINT,
weekday_nm VARCHAR(10),
month_nm VARCHAR(10),
day_of_year SMALLINT,
quarter_id TINYINT,
first_day_of_month DATE,
last_day_of_month DATE,
start_dts DATETIME,
end_dts DATETIME);
WHILE @start_dt<=@end_dt BEGIN
    INSERT INTO @dates(date_id, date_year, date_month, date_day, weekday_id, weekday_nm, month_nm, day_of_year, quarter_id, first_day_of_month, last_day_of_month, start_dts, end_dts)
    VALUES(@start_dt, YEAR(@start_dt), MONTH(@start_dt), DAY(@start_dt), DATEPART(WEEKDAY, @start_dt), DATENAME(WEEKDAY, @start_dt), DATENAME(MONTH, @start_dt), DATEPART(DAYOFYEAR, @start_dt), DATEPART(QUARTER, @start_dt), DATEADD(DAY, -(DAY(@start_dt)-1), @start_dt), DATEADD(DAY, -(DAY(DATEADD(MONTH, 1, @start_dt))), DATEADD(MONTH, 1, @start_dt)), CAST(@start_dt AS DATETIME), DATEADD(SECOND, -1, CAST(DATEADD(DAY, 1, @start_dt) AS DATETIME)));
    SET @start_dt=DATEADD(DAY, 1, @start_dt);
END;
SELECT date_id AS [Ngày], date_year AS [Năm], date_month AS [Tháng], date_day AS [Ngày trong tháng], weekday_id AS [ID thứ], weekday_nm AS [Thứ], month_nm AS [Tháng], day_of_year AS [Ngày trong năm], quarter_id AS [Quý], first_day_of_month AS [Ngày đầu tiên của tháng], last_day_of_month AS [Ngày cuối cùng của tháng], start_dts, end_dts
FROM @dates;

Thanks for watching!

Tags: print list date of month sqlserver
0