在表格中插入一段时间内的所有日期

时间:2013-04-12 04:33:39

标签: sql sql-server

我有一个包含两列(date_IDentry_Date)的表格。我想将特定时间段内的所有日期插入到表格中(比如说2002-2030之间的所有日期)。有没有办法在SQL-Server中使用循环?

4 个答案:

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

在oracle中我会做

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,输入适当的值。