你可以试试这个来获取一周的开始或结束日期。只需提供一个您可以找到日期的日期。
逻辑非常简单,只需获取一周的开始日期和结束日期,然后检查开始日期是否大于月份日期,如果是,则将月份日期作为周开始日期,否则将一周的开始日期。
摆弄一下以获得您想要的东西这是代码:
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
看这里:
小提琴