【发布时间】:2020-07-08 19:14:36
【问题描述】:
我想使用 DATEDIFF() 在我的日期维度表中添加连续 30 天的数据,但我得到空白结果。您能帮我更正下面的代码以获得所需的结果吗?
CREATE TABLE dbo.dateDimension (
DateKey INT NOT NULL
,DateValue DATE NOT NULL
,CYear SMALLINT NOT NULL
,CMonth TINYINT NOT NULL
,CONSTRAINT PK_DimDate PRIMARY KEY ( DateKey )
);
GO
CREATE PROC dbo.dateTest
@StartDate DATETIME
AS
WHILE (DATEDIFF(day, @StartDate, GETDATE()) <=30)
BEGIN
INSERT into dbo.dateDimension
SELECT CAST( YEAR(@StartDate) * 10000 + MONTH(@StartDate) * 100 + DAY(@StartDate) AS INT)
,@StartDate
,YEAR(@StartDate)
,MONTH(@StartDate)
SET @StartDate = DATEADD(d,1,@StartDate)
END;
GO
EXECUTE dbo.dateTest '2010-01-01'
SELECT * FROM dbo.dateDimension
【问题讨论】:
标签: sql-server stored-procedures while-loop datediff