关于插入一段时间内数据的问题

h6252996 2013-05-22 06:12:32
有一个时间段 例如是 2013-05-01到2013-05-22 他们的内容都是XXXXX 如何把他们批量的插入表中 也就是插入 22条 内容为XXXXX切时间是5-1到5-22的记录。 存储过程应该怎么写。已知存储过程里传了开始时间,结束时间,内容这三个参数。 求大神们指教。
...全文
201 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2013-05-23
  • 打赏
  • 举报
回复
你的逻辑有问题,while那里不要一开始就加一,直接@i=@day就可以了
h6252996 2013-05-23
  • 打赏
  • 举报
回复
没有报错 我用数据测试 插入0行。。 我用之前你给的函数 成功了 但是 用函数的话 我没法判断 如果之前插入过了就更新 否则就插入。。
發糞塗牆 2013-05-23
  • 打赏
  • 举报
回复
引用 9 楼 h6252996 的回复:
ALTER PROCEDURE [dbo].[dbaddshebei] @sysid int, @sbid int, @begtime datetime, @endtime datetime, @neirong int AS declare @day int,@i int,@checktime datetime set @day=datediff(day,@begtime,@endtime) set @i=1 set @checktime=@begtime while @i=@day+1 begin insert into sbcheckplantime(sysid,sbid,checktime,planjxtime) values(@sysid,@sbid,@checktime,@neirong) set @checktime=dateadd(day,1,@checktime) set @i=@i+1 end 我写的 但是没有插入成功 不知道是什么问题。。求助啊·
有没有报错?有没有跟踪过到了insert那步,那些参数是不是你希望传入的格式?
h6252996 2013-05-23
  • 打赏
  • 举报
回复
ALTER PROCEDURE [dbo].[dbaddshebei] @sysid int, @sbid int, @begtime datetime, @endtime datetime, @neirong int AS declare @day int,@i int,@checktime datetime set @day=datediff(day,@begtime,@endtime) set @i=1 set @checktime=@begtime while @i=@day+1 begin insert into sbcheckplantime(sysid,sbid,checktime,planjxtime) values(@sysid,@sbid,@checktime,@neirong) set @checktime=dateadd(day,1,@checktime) set @i=@i+1 end 我写的 但是没有插入成功 不知道是什么问题。。求助啊·
發糞塗牆 2013-05-23
  • 打赏
  • 举报
回复
你先创建函数,然后类似以下格式: insert into 目标表([date],[内容]) select [date] ,'XXXXX' as [内容] from dbo.generateTime('2009-01-01','2009-01-10')
h6252996 2013-05-23
  • 打赏
  • 举报
回复
看不太明白 我用while 测试了 没插入成功
發糞塗牆 2013-05-23
  • 打赏
  • 举报
回复
http://blog.csdn.net/maco_wang/article/details/6279025用这里的函数,获取两个日期间的所有天数,然后进行运算
那城 2013-05-23
  • 打赏
  • 举报
回复
你用游标就可以了。
daiyueqiang2045 2013-05-22
  • 打赏
  • 举报
回复
使用while 循环就OK。
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复

--日期差还要加1
create proc pro_a3
	@state datetime,
	@end datetime
as
	declare @day int
	set @day = datediff(day,@state,@end)
	declare @i int
	set @i=1
	while @i<=@day+1
	begin
	--你的sql语句
	--insert into a (smalldatetime) values('2012-5-5')
	set @i=@i+1
	end

go
exec pro_a3 '2013-05-01','2013-05-22'
路伊阑珊 2013-05-22
  • 打赏
  • 举报
回复
参考
declare @b datetime,@e datetime
set @b='2009-1-1'
set @e=dateadd(y,1,@b)
 
while @b<@e
begin
  insert tby values (@b,'....')
  set @b=@b+1
end
MrYangkang 2013-05-22
  • 打赏
  • 举报
回复


create proc pro_a3
	@state datetime,
	@end datetime
as
	declare @day int
	set @day = datediff(day,@state,@end)
	declare @i int
	set @i=1
	while @i<=@day
	begin
--你的sql语句
	--insert into a (smalldatetime) values('2012-5-5')
	set @i=@i+1
	end

go
exec pro_a3 '2013-05-01','2013-05-22'

22,229

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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