これを試して、週の開始日または終了日を取得できます。日付がわかる日付を指定するだけです。
ロジックは非常に単純で、週の開始日と終了日を取得し、開始日が月の日付よりも大きい場合は月の日付を週の開始日として、それ以外の場合は週の開始日をチェックします。
あなたが望むものを得るために少しいじってください ここにコードがあります:
DECLARE @date datetime
SET @date = '2013-01-30'
DECLARE @startdate datetime
DECLARE @enddate datetime
DECLARE @MonthStart datetime
Declare @MonthEnd datetime
SET @startdate = DATEADD(wk, DATEDIFF(wk, 6, @date), 6)
SET @enddate = DATEADD(dd,6, DATEADD(wk, DATEDIFF(wk, 6, @date), 6))
SET @monthStart = CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(@date)-1),@date),101)
SET @MonthEnd =CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(DATEADD(mm,1,@date))),DATEADD(mm,1,@date)),101)
--select @startdate wstart,@MonthStart monthstart,@enddate wend,@MonthEnd monthend
select
[date] = @date
,[week] = DATEPART(wk,@date)
,[WeekStartDate] = Case
WHEN @startdate <= @MonthStart then @MonthStart else @startdate
END
,[WeekEndDate] = Case
WHEN @enddate > @MonthEnd then @MonthEnd else @enddate
END
ここを参照してください:
フィドル