导航
  • 主页
  • 基础类
  • 应用实例
  • 新技术前沿

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

wh1977 PM  2007-12-03 09:39:34
如题
...全文
109 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复

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

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
海阔天空兄弟,多谢了!
回复
发动态
发帖子
MS-SQL Server
创建于2007-09-28

3.2w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
社区公告
暂无公告