02/10/2018, 00:36
[SQLSERVER] Lấy tất cả những ngày cuối tuần (chủ nhật) trong một năm
Bài viết hôm nay, mình sẽ hướng dẫn các bạn liệt kê ra những ngày cuối tuần trong một năm . Ví dụ: ngày chủ nhật, bạn có thể chỉnh lại để liệt kê ngày bất kỳ. Nếu các bạn nào viết phần mềm nhân sự, nếu muốn liệt kê ra những ngày chủ nhật để tính công ...
Bài viết hôm nay, mình sẽ hướng dẫn các bạn liệt kê ra những ngày cuối tuần trong một năm. Ví dụ: ngày chủ nhật, bạn có thể chỉnh lại để liệt kê ngày bất kỳ.
Nếu các bạn nào viết phần mềm nhân sự, nếu muốn liệt kê ra những ngày chủ nhật để tính công thì câu lệnh sql dưới đây sẽ giúp bạn liệt kê ra dễ dàng.
Thay vì chúng ta phải nhập từng ngày nghĩ chủ nhật vào table ngày nghĩ.
Câu lệnh Sql server:
DECLARE @Year AS INT, @FirstDateOfYear DATETIME, @LastDateOfYear DATETIME -- You can change @year to any year you desire SELECT @year = 2010 SELECT @FirstDateOfYear = DATEADD(yyyy, @Year - 1900, 0) SELECT @LastDateOfYear = DATEADD(yyyy, @Year - 1900 + 1, 0) -- Creating Query to Prepare Year Data ;WITH cte AS ( SELECT 1 AS DayID, @FirstDateOfYear AS FromDate, DATENAME(dw, @FirstDateOfYear) AS Dayname UNION ALL SELECT cte.DayID + 1 AS DayID, DATEADD(d, 1 ,cte.FromDate), DATENAME(dw, DATEADD(d, 1 ,cte.FromDate)) AS Dayname FROM cte WHERE DATEADD(d,1,cte.FromDate) < @LastDateOfYear ) SELECT FromDate AS Date, Dayname FROM CTE WHERE DayName IN ('Saturday','Sunday') /* WHERE DayName IN ('Saturday,Sunday') -- For Weekend WHERE DayName NOT IN ('Saturday','Sunday') -- For Weekday WHERE DayName LIKE 'Monday' -- For Monday WHERE DayName LIKE 'Sunday'-- For Sunday */ OPTION (MaxRecursion 370)
Kết quả trả về:
CHÚC CÁC BẠN THÀNH CÔNG!