select * from TableA where datediff(hh,TableA.testdate,TableB.createdate) <> -16 and TableA.ssn=TableB.ssn
同意这样的做法 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后返回新的日期刚好符合你需要的
select * from a,b where dateadd(hh,16,createdate)=testdate
select testdate from A,B where A.ssn = B.ssn and datediff(A.testdate,B.createdate) = 16
where datediff(day,TableA.testdate,TableB.createdate)=21
and TableA.ssn=TableB.ssn
from a join b
on a.ssn=b.ssn
and dateadd(hh,-16,a.testdate)=b.createdate
select createdate as convert (char(20), B.createdate) from B
where datediff(hh,TableA.testdate,TableB.createdate)=-16
and TableA.ssn=TableB.ssn
2003-09-16 19:32:06.000
2003-09-17 11:32:06.000
where datediff(hh,TableA.testdate,TableB.createdate) <> -16
and TableA.ssn=TableB.ssn
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后返回新的日期刚好符合你需要的