これは、以下の SQL に対する私の基準です。
2013 年 1 月 7 日から 2013 年 3 月 18 日まで
1 - 2013 年 1 月 7 日より後の最初の日曜日は 2013 年 1 月 13 日 - 完了 (最初の日曜日) 2 - 2013 年 3 月 18 日より前の最初の日曜日は 2013 年 3 月 17 日 - 完了 (最終日曜日) 3 - 2013 年 1 月 13 日から 2013 年 3 月 17 日までの日数 = 63、 63 を 7 で割る = 9、+1 = 10
したがって、datediff で行う必要があるのは、上記の 1 行目と 2 行目 (最初と最後の日曜日の日付) の結果を使用して、セクション 3 の正しい結果を取得することです。
Declare @From Datetime
Declare @To Datetime
Set @From = '07 Jan 2013'
Set @To = '18 Mar 2013'
Select dateadd(dd, CASE WHEN datepart(weekday, @From) = 1 THEN 0 ELSE 8 - datepart(weekday, @From) END,@From) as FirstSunday,
dateadd(dd, CASE WHEN datepart(weekday, @To) = 1 THEN 0 ELSE 1 - datepart(weekday, @To) END,@To) as LastSunday
,datediff(d,@From, @To)