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)
使用自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种情况之一:
DATEDIFF功能是负:这意味着A.insertdate小于B.insertdate DATEDIFF函数是零:这意味着,A.insertdate等于B.insertdate DATEDIFF功能是1-60之间:装置,其A.insertdate是高达60秒大于B.insertdate 实际上,您可以DATEDIFF根据您的特定需求更改对功能的检查,例如:检查DATEDIFF(...)介于-60和0之间,确保A.insertdate提前60秒B.insertdate但不超过60秒.
注意:问题的早期版本具有连接条件,A.insertdate = B.insertdate导致DATEDIFF表达式为DATEDIFF(second, A.insertdate, B.insertdate) BETWEEN -60 AND 60.