问题是这样的:
我现在有多个表,表名为:log_2008_11,log_2008_12,log_2009_01,log_2009_02等等,即表名构成为log+年份+月份
现在需要建立一个存储过程,查询日期范围内的所有数据。传入两个参数,为日期参数,类型为int,
CREATE PRODURCE GET_LOG_INFO
@beginDate int,
@endDate int
as
begin------end如何才能实现这个功能???
EXEC GET_LOG_INFO 20081101,20090201 查询08年11月到09年02月的数据,这些数据分布在不同的表中。但都是动态的。
我现在有多个表,表名为:log_2008_11,log_2008_12,log_2009_01,log_2009_02等等,即表名构成为log+年份+月份
现在需要建立一个存储过程,查询日期范围内的所有数据。传入两个参数,为日期参数,类型为int,
CREATE PRODURCE GET_LOG_INFO
@beginDate int,
@endDate int
as
begin------end如何才能实现这个功能???
EXEC GET_LOG_INFO 20081101,20090201 查询08年11月到09年02月的数据,这些数据分布在不同的表中。但都是动态的。
!
ding
@beginDate datetime,
@endDate datetime
as
begin
declare @sql varchar(8000),@i int
select @sql='',@i=datediff(mm,@beginDate,@endDate)+1
while @i>0
begin
select
@i=@i-1,
@sql=' union all select * from Log_'+rtrim(datepart(YY,t.Dates))+'_'
+right('0'+rtrim(datepart(MM,t.Dates)),2)+@sql
from
(select dateadd(mm,@i,@beginDate) as Dates) t
end
set @sql='select * from ('+stuff(@sql,1,11,'')+') t'
exec(@sql)
end
goEXEC GET_LOG_INFO '20081101','20090201'
godrop procedure GET_LOG_INFO
go