我有如下数据(表: ASet):
ToolModule PmType SetDate ToleranceTime
DWPRS04@R1 D_P 2011-9-4 0
DWPRS04@R1 W_P 2011-9-9 1
.....其中 SetDate 为日期
TolenranceTime 为 String(不过内容均为数字)目前想要搜索 TolenranceTime < = SetDate-Now <=TolenranceTime .即 SetDate日期与当天相减 的绝对值 不大于 TolenranceTime 的值.
不知道这个语句如何写.Select * from ASet where SetDate......?

解决方案 »

  1.   

    Select * from ASet where now-SetDate<=val(TolenranceTime)
      

  2.   

    select * from ASet where abs(datediff(d,now(),SetDate))<=TolenranceTime
      

  3.   

    这里发言,表示您接受了CSDN社区的用户行为准则。 
    请对您的言行负责,并遵守中华人民共和国有关法律法规,尊重网上道德。 
    转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。 
      

  4.   

    如果我要实现提前的功能,比如提前3天:Select * from ASet where now+3-SetDate<=val(TolenranceTime)这个是可以实现的,
    但这样就不行了:
    dim Int_A as byte
    Int_A=3
    Select * from ASet where (now+Int_A)-SetDate<=val(TolenranceTime)如何能灵活的设置这个提前天数呢?
      

  5.   

     创建一个存储过程,将Int_A作为参数传入
      

  6.   

    日期可以直接相减,因为 DataTime 类型的整数部分就是天数。
      

  7.   


    日期可以直接相减,这个 worldy 提供的例子是可以实现的.
    另外我自己用:
    Select * from ASet where now+3-SetDate<=val(TolenranceTime)这个也是可以实现的,不过将 3 用 变量替代就不行了...如何用变量自由的设置呢?
      

  8.   


    sql="Select * from ASet where now+" & cstr(nDays) & "-SetDate<=val(TolenranceTime)"
    现在你可以给nDays指定一个值
      

  9.   


    sqlStr = "Select * from ASet where (now+" & Int_A & ")-SetDate<=val(TolenranceTime)"