SQL中获取一段时间有多少个星期

with cte as
(
select dt=dateadd(d,number,'2017-01-01')
from master..spt_values
where type = 'P' and dateadd(d,number,'2017-01-01') <= '2017-12-31'
)
select top 1 weekNum=datepart(wk,dt) from cte group by datepart(wk,dt) order by datepart(wk,dt) desc



master..spt_values这个表主要用来保存一些枚举值, 据说是从sybase继承过来,许多函数和存储过程可以看到它的身影。也可以叫系统常量表吧。

里面的东西比较多, 但最常用的是:

--0~2047 共2048个数字
SELECT number FROM MASTER..spt_values WHERE  TYPE = 'p'

你可能感兴趣的:(SQL)