这样的查询语句怎么做成存储过程??????????

gxl0870 2007-07-06 03:27:12
语句是:
select requestUrl,ipAddress from IpUrl
where datediff(mm,dayTime,'2007-7-4')=0


提示:datediff(mm,dayTime,'2007-7-4')=0是判断dayTime的时间是2007年7月
datediff(dd,dayTime,'2007-7-4')=0是判断dayTime的时间是2007年7月4日
我写的存储过程要传mm(或者dd),'2007-7-4'两个参数,但datediff()这个函数的第一个参数他不允许用变量来传参数(这就是难点)
我是这样写的:

create procedure FindDetail
@a nchar,@b datetime
as
if @a='mm'
begin
select requestUrl,ipAddress from IpUrl
where datediff(mm,dayTime,@b)=0
end
if @a='dd'
begin
select requestUrl,ipAddress from IpUrl
where datediff(dd,dayTime,@b)=0
end

这样写的错误是,运行时候,一样数据都得不到
请问大家,该怎么写
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolf5200 2007-07-06
  • 打赏
  • 举报
回复
create procedure FindDetails
@a nchar,@b datetime
as
if @a='mm'
begin
declare @mysql varchar(200),@sr varchar(500),@srt varchar(30),@rrt varchar(20)
set @rrt=')=0'
set @srt='datediff('
set @sr='select requestUrl,ipAddress from IpUrl where'
select @mysql=@sr+' '+ @srt+@a+' '+',dayTime,'+@b+@rrt
print @mysql
exec (@mysql)
end
if @a='dd'
begin
select @mysql=@sr+' '+ @srt+@a+' '+',dayTime,'+@b+@rrt
print @mysql
exec (@mysql)
end
echiynn 2007-07-06
  • 打赏
  • 举报
回复
粗心
paoluo 2007-07-06
  • 打赏
  • 举报
回复
--錯誤原因是字符型數據沒有指定長度,默認為1
create procedure FindDetail
@a varchar(10),@b datetime
as
if @a='mm'
begin
select requestUrl,ipAddress from IpUrl
where datediff(mm,dayTime,@b)=0
end
if @a='dd'
begin
select requestUrl,ipAddress from IpUrl
where datediff(dd,dayTime,@b)=0
end
Zack999 2007-07-06
  • 打赏
  • 举报
回复
@a nchar(2)

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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