2010-10-14 11 views
8

Poszukuje zapytania SQL/zapytań, które określałyby dzień rozpoczęcia (poniedziałek) bieżącego tygodnia.znajdowanie dnia rozpoczęcia (poniedziałek) bieżącego tygodnia

Przykład: Jeżeli dzisiaj jest -> następnie początek tygodnia jest

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 

Widziałem wielu "rozwiązania" w Google i StackOverflow. Spojrzenie coś takiego:

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

To nie działa, ponieważ: Sun 10 październik 2010 -> początek tygodnia poniedziałek 11 października 2010 (co jest niepoprawne).

+0

Czy trzeba znaleźć tylko poniedziałek lub pierwszy dzień roboczy tygodnia? –

+0

Chcę rozpocząć tydzień (poniedziałek), niezależnie od tego, czy jest to dzień roboczy, czy urlop. –

Odpowiedz

12

Spróbuj użyć DATEFIRST, aby wyraźnie ustawić dzień tygodnia, który będzie uważany za "pierwszy".

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

ten powróci w poniedziałek w tygodniu InputDate przypada w.

+0

Znalazłem inne rozwiązanie, ale ten jest o wiele prostszy i czystszy. Dziękuję Ci. –

+0

jak możemy sprawić, aby znaleźć w ostatni poniedziałek do ostatniego tygodnia? Próbowałem wykonać 2- wyrażenie zamiast 1-, ale bez powodzenia. Jakieś sugestie? –

Powiązane problemy