首页 新闻 会员 周边 捐助

关于SQl的存储过程中的between报错

0
悬赏园豆:20 [已解决问题] 解决于 2013-12-21 20:30
 1 go 
 2 create proc create_UserSysLog
 3  @UsersysLog_Uid nvarchar(128)=null
 4 ,@UsersysLog_Action   nvarchar(200)=null
 5 ,@UsersysLog_Operate  nvarchar(500)=null
 6 ,@begdt nvarchar(50)  --开始时间
 7 ,@enddt nvarchar(50)  --结束时间
 8 ,@UsersysLog_DateTime nvarchar(50)=null --时间字段
 9  
10 as 
11 declare @error int --Rec Message
12 set @error=0;
13 
14 begin transaction 
15 select * from dbo.T_UsersysLog
16 where 
17 case when @begdt  is not null then --选择开始和结束字段
18 UsersysLog_DateTime between @enddt and @begdt and
19 else UsersysLog_DateTime<@enddt end and --只选择结束字段
20 UsersysLog_Uid like case when @UsersysLog_Uid is null then UsersysLog_Uid 
21 else @UsersysLog_Uid end  and
22 UsersysLog_Action like case when @UsersysLog_Action  is null then UsersysLog_Uid 
23 else @UsersysLog_Uid end  and
24 UsersysLog_Operate like case when @UsersysLog_Operate is null then UsersysLog_Operate
25 else @UsersysLog_Operate end 
26 
27 set @error=@error+@@ERROR
28 if @error>0
29     begin 
30       rollback transaction 
31     end
32 else 
33    begin
34       commit transaction   
35    end
View Code

1. 156,级别 15,状态 1,过程 create_UserSysLog,第 17 行
关键字 'between' 附近有语法错误。
2.关于间隔时间的查询:UsersysLog_DateTime between @enddt and @begdt

Frank铭的主页 Frank铭 | 初学一级 | 园豆:8
提问于:2013-06-14 09:46
< >
分享
最佳答案
0

建议你加个括号 where 1=1 and (case ... when...)

把格式弄的清晰一些

收获园豆:9
二十三号同学 | 小虾三级 |园豆:974 | 2013-06-14 10:13

好的

Frank铭 | 园豆:8 (初学一级) | 2013-06-14 10:15
其他回答(2)
0

时间类型是用nvarchar的吗? 用datetime类型好不?这样才能比较两个时间的间隔,而你那是比较字符串,那个字符串怎么比较间隔?????

收获园豆:9
小坡子~ | 园豆:252 (菜鸟二级) | 2013-06-14 11:33
0

between中的语句最好打上括号

收获园豆:2
Sunny_Lynn | 园豆:202 (菜鸟二级) | 2013-08-30 11:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册