请问如何一次性插入一段时间内的多条数据

sky82 2007-11-07 08:18:51
比如我的一个表table1,字段ID,DATETIME,NAME,SHULIANG
第一个插入的数据为 1 2007-11-01 数据库 5
我如果要插入11月1日到30日的数据其它字段数据不变都为1号时的一样
该如何插入一次完成。
如1 2007-11-02 数据库 5
1 2007-11-03 数据库 5
1 2007-11-04 数据库 5
1 2007-11-05 数据库 5
.
.
.
.
.
.
.

1 2007-11-30 数据库 5

...全文
117 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2007-11-07
  • 打赏
  • 举报
回复

select top 30 id=identity(int,0,1) into #
from syscolumns,sysobjects

insert into table1
select 1,dateadd(day,id,'2007-11-01'),'数据库',5
from #

drop table #
internetroot 2007-11-07
  • 打赏
  • 举报
回复
/*
时间累加插入表中
*/

create table #t([id] int,[date] datetime,dbname varchar(16),num int)

declare @enddate datetime
declare @date datetime

set @enddate='2008-12-01' --通过改变这两个变量设置插入时间的范围
set @date='2007-11-1'
while datediff(Month,@date,@enddate)>0
begin
insert into #t values(1,@date,'数据库',5)
set @date=dateadd(day,1,@date)
end

select * from #t
drop table #t
ojuju10 2007-11-07
  • 打赏
  • 举报
回复

create table table1 (id int ,datetime datetime, name varchar(20),shuliang int)

create trigger insert_tab on table1
for insert
as
begin
declare @i int
set @i=1
while @i<=30
begin
insert into table1 select id,dateadd(day, @i,datetime),name,shuliang from inserted
where convert(varchar(7),datetime,120)=convert(varchar(7),dateadd(day, @i,datetime),120)
set @i=@i+1
end
end

insert into table1 select 1 , '2007-11-01' , '数据库', 5

select * from table1

id datetime name shuliang
-------------------------------------------------
1 2007-11-01 00:00:00.000 数据库 5
1 2007-11-02 00:00:00.000 数据库 5
1 2007-11-03 00:00:00.000 数据库 5
1 2007-11-04 00:00:00.000 数据库 5
1 2007-11-05 00:00:00.000 数据库 5
1 2007-11-06 00:00:00.000 数据库 5
1 2007-11-07 00:00:00.000 数据库 5
1 2007-11-08 00:00:00.000 数据库 5
1 2007-11-09 00:00:00.000 数据库 5
1 2007-11-10 00:00:00.000 数据库 5
1 2007-11-11 00:00:00.000 数据库 5
1 2007-11-12 00:00:00.000 数据库 5
1 2007-11-13 00:00:00.000 数据库 5
1 2007-11-14 00:00:00.000 数据库 5
1 2007-11-15 00:00:00.000 数据库 5
1 2007-11-16 00:00:00.000 数据库 5
1 2007-11-17 00:00:00.000 数据库 5
1 2007-11-18 00:00:00.000 数据库 5
1 2007-11-19 00:00:00.000 数据库 5
1 2007-11-20 00:00:00.000 数据库 5
1 2007-11-21 00:00:00.000 数据库 5
1 2007-11-22 00:00:00.000 数据库 5
1 2007-11-23 00:00:00.000 数据库 5
1 2007-11-24 00:00:00.000 数据库 5
1 2007-11-25 00:00:00.000 数据库 5
1 2007-11-26 00:00:00.000 数据库 5
1 2007-11-27 00:00:00.000 数据库 5
1 2007-11-28 00:00:00.000 数据库 5
1 2007-11-29 00:00:00.000 数据库 5
1 2007-11-30 00:00:00.000 数据库 5
Limpire 2007-11-07
  • 打赏
  • 举报
回复
--sysreferences的colid最大是41,如果插入超过1个月的数据,自己构造一个id列表。

select top 50 id=identity(int,0,1) into #T from syscolumns,sysobjects

insert into table1 select 1,dateadd(day,id,'2007-11-01'),'数据库',5 from #T

drop table #T
Limpire 2007-11-07
  • 打赏
  • 举报
回复
insert into table1 select top 30 1,dateadd(day,colid-1,'2007-11-01'),'数据库',5 from syscolumns where id=object_id('sysreferences') order by colid
Limpire 2007-11-07
  • 打赏
  • 举报
回复
insert into table1 select top 30 1,dateadd(day,colid-1,'2007-11-01'),'数据库',5 from syscolumns where id=object_id('sysreferences')

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧