某一日期字段要选择这样的值, 如:0701-0706,0708,0710 , (表示07年1月到6月, 或者07年8月,或者07年10月) , 如何写SQL的函数来实现?

wh1977 2007-12-03 09:39:34
如题
...全文
156 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
昵称被占用了 2007-12-03
  • 打赏
  • 举报
回复

--存储过程实现
--自己修改表名和字段名
--如果还有问题说明自己的表结构,详细的要求,距离说明需要的最后的结果

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'

areswang 2007-12-03
  • 打赏
  • 举报
回复
没理解什么意思?
wh1977 2007-12-03
  • 打赏
  • 举报
回复
注: 变量的个数是不定的
wh1977 2007-12-03
  • 打赏
  • 举报
回复
海阔天空兄弟,多谢了!

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧