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

时间:2023-01-08 19:21:13
有一个时间段 例如是 2013-05-01到2013-05-22 他们的内容都是XXXXX 如何把他们批量的插入表中  也就是插入 22条 内容为XXXXX切时间是5-1到5-22的记录。 存储过程应该怎么写。已知存储过程里传了开始时间,结束时间,内容这三个参数。 求大神们指教。

12 个解决方案

#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
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'

#2


参考
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

#3



--日期差还要加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'

#4


使用while 循环就OK。

#5


你用游标就可以了。

#6


http://blog.csdn.net/maco_wang/article/details/6279025用这里的函数,获取两个日期间的所有天数,然后进行运算

#7


看不太明白  我用while 测试了 没插入成功

#8


你先创建函数,然后类似以下格式:

insert into 目标表([date],[内容])
select [date] ,'XXXXX' as [内容]
from dbo.generateTime('2009-01-01','2009-01-10')

#9


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

我写的 但是没有插入成功 不知道是什么问题。。求助啊·

#10


引用 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那步,那些参数是不是你希望传入的格式?

#11


没有报错 我用数据测试 插入0行。。  我用之前你给的函数 成功了 但是 用函数的话 我没法判断 如果之前插入过了就更新 否则就插入。。

#12


你的逻辑有问题,while那里不要一开始就加一,直接@i=@day就可以了

#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
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'

#2


参考
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

#3



--日期差还要加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'

#4


使用while 循环就OK。

#5


你用游标就可以了。

#6


http://blog.csdn.net/maco_wang/article/details/6279025用这里的函数,获取两个日期间的所有天数,然后进行运算

#7


看不太明白  我用while 测试了 没插入成功

#8


你先创建函数,然后类似以下格式:

insert into 目标表([date],[内容])
select [date] ,'XXXXX' as [内容]
from dbo.generateTime('2009-01-01','2009-01-10')

#9


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

我写的 但是没有插入成功 不知道是什么问题。。求助啊·

#10


引用 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那步,那些参数是不是你希望传入的格式?

#11


没有报错 我用数据测试 插入0行。。  我用之前你给的函数 成功了 但是 用函数的话 我没法判断 如果之前插入过了就更新 否则就插入。。

#12


你的逻辑有问题,while那里不要一开始就加一,直接@i=@day就可以了