小编典典

生成日期范围之间的日期

sql

我需要填充一个表,该表将存储2个给定日期之间的日期范围:09/01/11-10/10/11

因此,在这种情况下,该表将从2011年9月1日开始存储,直到每天存储到10/10/11,我想知道在SQL Server中是否有一种巧妙的方法-我目前正在使用SQL Server 2008 。 谢谢


阅读 158

收藏
2021-05-05

共1个答案

小编典典

在SQL 2005+上很容易;如果您有数字表或理货表,操作会更容易。我在下面伪造了它:

DECLARE @StartDate DATE = '20110901'
  , @EndDate DATE = '20111001'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)

如果您有一个计数表,则用该表替换子查询。没有递归。

2021-05-05