create proc sp_wsp @star datetime, @n int as set datefirst 1 ;with wsp as ( select rq=dateadd(dd,number,@star) from master..spt_values where type='p' and number between 0 and @n*2 and datepart(dw,dateadd(dd,number,@star)) not in(6,7) ) select * from wsp a where (select count(1) from wsp where rq<a.rq)=@n goexec sp_wsp '2010-08-16',10--结果: rq ----------------------- 2010-08-30 00:00:00.000
create proc sp_wsp
@star datetime,
@n int
as
set datefirst 1
;with wsp
as
(
select rq=dateadd(dd,number,@star) from master..spt_values where type='p' and number between 0 and @n*2
and datepart(dw,dateadd(dd,number,@star)) not in(6,7)
)
select * from wsp a where (select count(1) from wsp where rq<a.rq)=@n
goexec sp_wsp '2010-08-16',10--结果:
rq
-----------------------
2010-08-30 00:00:00.000