set @sql='select top '+convert(varchar,@sizemode ) +'* from (select top '+ convert(varchar,@showrecord)+'* from ip_user where datediff(day,addtime,'''+cast(@visttime as varchar)+''')=0   order by id asc) a order by a.id desc'

解决方案 »

  1.   

    to  zheninchangjiang(徐震>愿母亲安息) 
        这样出现了别的错误,
    System.Data.SqlClient.SqlException: 第 1 行: '-' 附近有语法错误。
    是不是传入的DateTime的格式有问题?怎么解决,谢谢!
    在前台我已经转换为DateTime格式了,
      

  2.   

    dotnet 和SQLSERVER结合的相当紧密,应该不会在日期格式上出问题
      

  3.   

    System.Data.SqlClient.SqlException: 第 1 行: '-' 附近有语法错误。
    这应当时前台错误吧,
    建议把传入日期类型换成字符类型,然后再在后台转换为日期型。以免出错
      

  4.   

    不是前台错误,是SQLSERVER返回的错误,因为是SQLexception
      

  5.   

    --*前面少了空格吧,试试这样:set @sql='select top '+convert(varchar,@sizemode )+' * from (select top '+ convert(varchar,@showrecord)+' * from ip_user where datediff(day,addtime,'''+cast(@visttime as varchar)+''')=0   order by id asc) a order by a.id desc'
      

  6.   

    --如果还不行,就这样:declare @visttime datetime
    declare @sql nvarchar(4000)
    set @sql='select top '+convert(varchar,@sizemode )+' * from (select top '+ convert(varchar,@showrecord)+' * from ip_user where datediff(day,addtime,@visttime)=0  order by id asc) a order by a.id desc'
    exec sp_executesql @sql,N'@visttime datetime',@visttime