2010-10-14 48 views
8

Tìm kiếm truy vấn/truy vấn SQL để xác định ngày bắt đầu (Thứ Hai) của tuần hiện tại.tìm ngày bắt đầu (Thứ Hai) của tuần hiện tại

Ví dụ: Nếu hôm nay là -> sau đó bắt đầu trong tuần là

Sat Oct 09, 2010 -> Start of the week is Monday Oct 04, 2010 
Sun Oct 10, 2010 -> Start of the week is Monday Oct 04, 2010 
Mon Oct 11, 2010 -> Start of the week is Monday Oct 11, 2010 
Tue Oct 12, 2010 -> Start of the week is Monday Oct 11, 2010 

Tôi đã thấy nhiều "giải pháp" trên Google và StackOverflow. Việc xem xét cái gì đó như:

SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111) 
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

này sai vì: Sun 10 tháng 10 năm 2010 -> đầu tuần thứ hai ngày 11 tháng 10 năm 2010 (đó là không chính xác).

+0

Bạn cần phải tìm chỉ thứ hai hoặc ngày làm việc đầu tiên trong tuần? –

+0

Tôi muốn bắt đầu tuần (Thứ Hai) bất kể đó là ngày làm việc hay ngày lễ. –

Trả lời

12

Hãy thử sử dụng DATEFIRST để đặt rõ ràng ngày trong tuần được coi là 'đầu tiên'.

set DATEFIRST 1 --Monday 
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

này sẽ trở lại vào ngày thứ Hai của tuần InputDate rơi vào.

+0

Tôi tìm thấy một giải pháp khác, nhưng giải pháp này đơn giản hơn và sạch hơn nhiều. Cảm ơn bạn. –

+0

làm thế nào chúng ta có thể làm cho nó để tìm thấy cuối tuần trước thứ hai? Tôi đã cố gắng để làm cho 2 trong biểu hiện thay vì 1-, nhưng không có may mắn. Bất kỳ đề xuất? –

Các vấn đề liên quan