不知道你想要什麼的緣故,但如果我理解你,這會爲你工作:
Declare @MyDate Date;
Declare @Temp Table (DateID INT IDENTITY(1,1) , [Date] Date);
Declare @Interval int =1;
Set @MyDate = '2017-08-12';
while @Interval <= 10
begin
if datename(dw,DATEADD(yy , [email protected] , @MyDate)) not in ('Sunday' , 'Saturday')
insert into @temp([Date]) select DATEADD(yy , [email protected] , @MyDate)
else
if datename(dw,DATEADD(yy , [email protected] , @MyDate)) = 'Saturday'
insert into @temp([Date]) select DATEADD(DD,2, DATEADD(yy , [email protected] , @MyDate))
else
insert into @temp([Date]) select DATEADD(DD,1, DATEADD(yy , [email protected] , @MyDate)) ;
set @Interval = @Interval +1;
end
Select * , datename(dw , [date]) DayName from @Temp;
結果:
+--------+---------------------+-----------+
| DateID | Date | DayName |
+--------+---------------------+-----------+
| 1 | 12.08.2016 00:00:00 | Friday |
| 2 | 12.08.2015 00:00:00 | Wednesday |
| 3 | 12.08.2014 00:00:00 | Tuesday |
| 4 | 12.08.2013 00:00:00 | Monday |
| 5 | 13.08.2012 00:00:00 | Monday |
| 6 | 12.08.2011 00:00:00 | Friday |
| 7 | 12.08.2010 00:00:00 | Thursday |
| 8 | 12.08.2009 00:00:00 | Wednesday |
| 9 | 12.08.2008 00:00:00 | Tuesday |
| 10 | 13.08.2007 00:00:00 | Monday |
+--------+---------------------+-----------+
實際上,您是否想要給定日期的最近的星期一? – Bohemian
當它是一個星期六,一個星期天或包括在我的假期表中;否則,我想要實際的一天 – Rich