我想创建一个包含一列的表,该列是从2015年1月1日开始到2015年底的每周日期。有没有一种简单的方法可以做到这一点?
即
CREATE TABLE Week_End_Dates
(
WeekEndDt date
);
INSERT INTO Week_End_Dates(WeekEndDt)
VALUES ('2015-01-01'),('2015-01-08')
答案 0 :(得分:2)
有很多方法可以生成日期序列。一种是使用这样的公用表表达式:
WITH CTE (DT) AS
(
SELECT CAST('2015-01-01' AS DATE) DT
UNION ALL
SELECT DATEADD(WEEK, 1, DT)
FROM CTE
WHERE DATEADD(WEEK, 1, DT) < '2016-01-01'
)
INSERT INTO Week_End_Dates(WeekEndDt)
SELECT * FROM CTE
它不是最有效的(并且可以通过多种方式轻松优化),但它应该做你想要的。
查询将生成如下结果:
WeekEndDt
2015-01-01
2015-01-08
2015-01-15
2015-01-22
2015-01-29
... etc until 2015-12-31