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ề:

lấy ngày cuối tuần trong sqlserver

CHÚC CÁC BẠN THÀNH CÔNG!

Tags:
0