SQL - 创建一个具有一周按日期列的列的表

时间:2016-02-22 23:03:07

标签: sql sql-server date

我想创建一个包含一列的表,该列是从2015年1月1日开始到2015年底的每周日期。有没有一种简单的方法可以做到这一点?

CREATE TABLE Week_End_Dates
(
WeekEndDt date
);

INSERT INTO Week_End_Dates(WeekEndDt)
VALUES ('2015-01-01'),('2015-01-08')

1 个答案:

答案 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