CREATE PROCEDURE SEARCH
@date1 datetime, --起始时间
@date2 datetime --终止时间
AS
DECLARE @date1New datetime,
@rq VARCHAR(6),
@i INT , --记录循环次数
@s VARCHAR(5000) --根据表多少 可以扩大它
SET @rq=CONVERT(VARCHAR,@date1,12) --把时间格式化 比如2008-06-20 变成了080620
SET @s='select * from sensor'+@rq --初始化 @s='select * from sensor080620' 这样第一个表就有了
SET @i=datediff(d,@date1,@date2) --日期相减
while @i>0
BEGIN
--如果是非常重要的系统可以在这里加上该物理表是否存在的语句
--if exists(select * from dbo.sysobjects where
--id = object_id(N'c') and OBJECTPROPERTY(id,N'IsUserTable')=1)
--begin
--SELECT '存在 '
--end
SET @date1New= dateadd(DAY,@i,@date1)
SET @rq=CONVERT(VARCHAR,@date1New,12)
--如果是按月进行查询 就修改上面
SET @s= @s+' union all select * from sensor'+@rq
SET @i=@i-1 --累加
END
SELECT @s
--exec(@S)
GO
EXEC SEARCH '2008-06-20 00:11:11.000','2008-07-25 00:11:11.000'
DROP PROCEDURE SEARCH
//SQL/1214