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
.