select * from a,b where a.ssn=b.ssn and dateadd(hh,-16,a.testdate)=b.createdate

解决方案 »

  1.   

    select * from TableA
        where datediff(day,TableA.testdate,TableB.createdate)=21
        and TableA.ssn=TableB.ssn
      

  2.   

    select * 
    from a join b 
    on a.ssn=b.ssn 
    and dateadd(hh,-16,a.testdate)=b.createdate
      

  3.   

    select a.* from a ,b where datediff(hour,createdate,testdate)=16
      

  4.   

    select * from A where convert (char(20), A.testdate - 16) = 
    select createdate as convert (char(20), B.createdate) from B
      

  5.   

    select * from TableA
        where datediff(hh,TableA.testdate,TableB.createdate)=-16
        and TableA.ssn=TableB.ssn
      

  6.   

    select * from a ,b where a.ssn=b.ssn and datediff(hour,createdate,testdate)=16
      

  7.   

    select a.*,b.station,b.createdate from a ,b where a.ssn=b.ssn and datediff(hour,createdate,testdate)=16
      

  8.   

    那怎樣把凡是在A表中testdate減16小時的記錄不等于B表中createdate的記錄選出來﹐該用什么SQL語句??
      

  9.   

    select * from a ,b where a.ssn=b.ssn and datediff(hour,createdate,testdate)<>16
      

  10.   

    現還有一個問題:如是同一天﹐上面的SQL語句就不行了﹐打一個比喻,如:
    2003-09-16 19:32:06.000
    2003-09-17 11:32:06.000
      

  11.   

    select * from TableA
        where datediff(hh,TableA.testdate,TableB.createdate) <> -16
        and TableA.ssn=TableB.ssn
      

  12.   

    同意这样的做法
    select * from a,b where a.ssn=b.ssn and dateadd(hh,-16,a.testdate)=b.createdate函数简单解释如下:
    dateadd()函数是Trancact-SQL里面的日期函数
    dateadd(<datepart>,<number>,<date>)
    函数返回指定日期date加上额外日期间隔number后的新日期
    这里的hh表示hour 1-23
    这里也就是将testdate中的日期中的小时部分加-16后返回新的日期刚好符合你需要的
      

  13.   

    select * from a,b where dateadd(hh,16,createdate)=testdate
      

  14.   

    select testdate from A,B where A.ssn = B.ssn and datediff(A.testdate,B.createdate) = 16