2010-10-14 16 views
8

Geçerli haftanın başlangıç ​​gününü (Pazartesi) belirleyen bir SQL sorgusu/sorgusu aranıyor.Geçerli haftanın başlangıç ​​gününü (Pazartesi) bulma

Örnek: bugün ise -> ardından haftanın ilk Google'da ve StackOverflow'daki birçok "çözümler" gördük

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 

olduğunu. gibi bir görünüm şey:

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

Bu arızalandığı için: Güneş 10 Ekim 2010 - Haftanın> başlangıç ​​(yanlış) Pazartesi 11 Ekim 2010.

+0

Yalnızca Pazartesi veya haftanın ilk çalışma günü bulmak gerekiyor mu? –

+0

Bir iş günü ya da tatil olup olmadığına bakılmaksızın haftanın başlangıcını (Pazartesi) istiyorum. –

cevap

12

'İlk' olarak kabul edilmek üzere haftanın gününü açıkça belirlemek için DATEFIRST kullanmayı deneyin.

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

Bu InputDate düşüyor haftanın Pazartesi dönecektir.

+0

Başka bir çözüm buldum ama bu daha basit ve daha temiz. Teşekkür ederim. –

+0

Pazartesi günü son bir haftayı bulmayı nasıl sağlayabiliriz? 1'den ziyade, 2'de ifade yapmaya çalıştım, ama şans yok. Baska öneri? –

İlgili konular