我有一个包含两列(date_ID
,entry_Date
)的表格。我想将特定时间段内的所有日期插入到表格中(比如说2002-2030之间的所有日期)。有没有办法在SQL-Server中使用循环?
答案 0 :(得分:6)
试试这个
DECLARE @d date='20020101'
WHILE @d<'20300101'
BEGIN
INSERT INTO dbo.Dates (entry_Date)
VALUES (@d)
SET @d=DATEADD(DAY,1,@d)
END
GO
答案 1 :(得分:4)
这应该这样做:
WITH TestItOut AS
(
SELECT CAST('2002-01-01' as datetime) DateColumn
UNION ALL
SELECT DateColumn + 1
FROM TestItOut
WHERE DateColumn + 1 <= '2030-12-31'
)
INSERT INTO YourTable (ColumnName)
SELECT DateColumn
FROM TestItOut
OPTION (MAXRECURSION 0)
答案 2 :(得分:2)
insert into sometable
select to_date('01/01/2013','dd/mm/yyyy') + level
from dual
connect by level < 10001
这将从2013年1月1日生成10000个日期,每日间隔。例如,如果您需要每小时间隔,则只需将+ level
更改为+ level/24
。
这是基本的ANSI sql分层查询 - 它也应该在SQL服务器中工作。
答案 3 :(得分:0)
insert into table values(date_ID,(select entry_Date from table where entry_Date between 01/01/2002 and 01/01/2030))
尝试这种查询。
代替date_ID,输入适当的值。