34,838
社区成员




--存储过程实现
--自己修改表名和字段名
--如果还有问题说明自己的表结构,详细的要求,距离说明需要的最后的结果
create proc pr_query
@Date varchar(100)
as
set nocount on
declare @sql varchar(8000)
declare @s varchar(100)
set @s=@Date+','
declare @i int
declare @j int
declare @t varchar(100)
set @sql=''
set @i=charindex(',',@s)
while @i>0
begin
set @t=left(@s,@i-1)
set @j=charindex('-',@t)
if @j>0
set @sql=@sql+' or (日期字段>=''20'+left(@t,@j-1)+'01'' and 日期字段<dateadd(month,1,''20'+stuff(@t,1,@j,'')+'01''))'
else
set @sql=@sql+' or (日期字段>=''20'+@t+'01'' and 日期字段<dateadd(month,1,''20'+@t+'01''))'
set @s=stuff(@s,1,@i,'')
set @i=charindex(',',@s)
end
set @sql='select * from tablename where '+stuff(@sql,1,3,'')
print @sql
exec(@sql)
go
--调用
exec pr_query '0701-0706,0708,0710'