我有一个有两列(date_ID
,entry_Date
)的表。我想将特定时间段内的所有日期插入表中(比如日期为 2002-2030 之间的所有日期)。有没有办法在 SQL-Server 中使用循环来做到这一点?
问问题
6164 次
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 回答