SQL Query接受时差

Ask*_*_SO 1 sql-server sql-server-2008 sql-server-2008-r2

我们有SSIS工作,将记录插入两个表.当我看到InsertDate时,有10到20毫秒的时差.

我需要根据InsertDate比较两个表,但是比较它时应忽略差异是否小于60秒.

Ex: 
2017-03-15 06:09:59.930
2017-03-15 06:10:50.030

Select * from A
inner join B
on A.ID = B.ID
Where A.insertdate < B.inserdate
Run Code Online (Sandbox Code Playgroud)

Phy*_*lyp 5

使用自SQL Server 2008以来支持的DATEDIFF功能:

DATEDIFF ( datepart , startdate , enddate ) 
Run Code Online (Sandbox Code Playgroud)

进行查询:

SELECT * FROM A
INNER JOIN B
  ON A.ID = B.ID
WHERE DATEDIFF(second, A.insertdate, B.insertdate) < 60 
Run Code Online (Sandbox Code Playgroud)

second参数计算秒的两个日期之间的差异.检查后DATEDIFF(...) < 60,可能会出现以下3种情况之一:

  1. DATEDIFF功能是:这意味着A.insertdate小于B.insertdate
  2. DATEDIFF函数是:这意味着,A.insertdate等于B.insertdate
  3. DATEDIFF功能是1-60之间:装置,其A.insertdate是高达60秒大于B.insertdate

实际上,您可以DATEDIFF根据您的特定需求更改对功能的检查,例如:检查DATEDIFF(...)介于-60和0之间,确保A.insertdate提前6​​0秒B.insertdate但不超过60秒.

注意:问题的早期版本具有连接条件,A.insertdate = B.insertdate导致DATEDIFF表达式为DATEDIFF(second, A.insertdate, B.insertdate) BETWEEN -60 AND 60.