日期:2014-05-18  浏览次数:20501 次

如何将字符串类型的时间段形成表数据?
例如已知起始日期为20060708,结束日期为20060710
然后程序遍历起始日期和结束日期,得到20060708、20060709、20060710三个日期
然后用这些日期形成表数据也就得到SQL
select   '20060708 '   rq   union   select   '20060709 '   rq   union   select   '20060710 '   rq

这样的处理对于数据量较小的情况下不会有错误,但是如果起始日期20060101,结束日期为20080910的话,由于时间跨度大,导致生成SQL语句过长而不能执行

请教是否有别的方式来实现该问题已解决目前遇到的问题?

------解决方案--------------------
declare @i int
select @i=datediff(day, '20060101 ', '20080910 ')

set rowcount @i
select identity(int,1,1) as id,convert(datetime, '20060101 ',120) as [time] into # from sysobjects a,syscolumns b
set rowcount 0

update # set [time]=dateadd(day,id,[time])
select [time] from #
drop table #

------解决方案--------------------
鱼 的方法好
------解决方案--------------------
你可以將這個存儲過程的結果集生成一個臨時表,然後使用這個臨時表參與查詢。

Create Table #T (日期 DateTime)
Insert #T EXEC SP_TEST '20060101 ', '20080910 '
select a1,a2,a3,b1,b2,rq from a,b, #T C