7

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

4

4 回答 4

7

尝试这个

DECLARE @d date='20020101' 
WHILE @d<'20300101'
    BEGIN
        INSERT INTO dbo.Dates (entry_Date)
        VALUES (@d)
        SET @d=DATEADD(DAY,1,@d)
    END
GO
于 2013-04-12T04:46:30.913 回答
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)
于 2013-04-12T04:49:55.243 回答
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 服务器中工作。

于 2013-04-12T06:18:30.650 回答
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 放置您的适当值。

于 2013-04-12T04:41:07.563 回答