如何将字符串类型的时间段形成表数据?
例如已知起始日期为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