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
1. 156,级别 15,状态 1,过程 create_UserSysLog,第 17 行
关键字 'between' 附近有语法错误。
2.关于间隔时间的查询:UsersysLog_DateTime between @enddt and @begdt
建议你加个括号 where 1=1 and (case ... when...)
把格式弄的清晰一些
好的
时间类型是用nvarchar的吗? 用datetime类型好不?这样才能比较两个时间的间隔,而你那是比较字符串,那个字符串怎么比较间隔?????
between中的语句最好打上括号