如何比较两个日期忽略sql server中的秒数

Atu*_*l R 4 t-sql sql-server datetime

我在 SQL Server 中有两个日期

@dt1 = 2018-03-15 11:12:10
@dt2 = 2018-03-15 11:12:45
Run Code Online (Sandbox Code Playgroud)

我想要 (@dt1 = @dt2)

这个条件应该是真的。

简而言之,我想忽略秒,只考虑日期和小时和分钟。

我怎样才能在 SQL Server 中做到这一点??

Dam*_*ver 6

所有这些四舍五入值的答案都忽略了我们可以询问两个值之间的分钟差,如果它是 0,我们知道它们发生在同一分钟内:

select CASE WHEN DATEDIFF(minute,@dt1,@dt2) = 0 THEN 'Equal' ELSE 'Not equal' END
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为DATEDIFF计数转换,这通常与“人类”解释DATEDIFF(minute,'10:59:59','11:00:01')相反-例如,将返回 1 而不是 0,尽管时间仅相隔 2 秒-但这正是您正在寻求的解释,其中所有忽略日期时间中的较小单位。


Jcl*_*Jcl 1

@dt1withoutsecs = DATETIMEFROMPARTS(year(@dt1), month(@dt1), day(@dt1), DATEPART(hh,@dt1), DATEPART(mi,@dt1), 0, 0)
@dt2withoutsecs = DATETIMEFROMPARTS(year(@dt2), month(@dt2), day(@dt2), DATEPART(hh,@dt2), DATEPART(mi,@dt2), 0, 0)
Run Code Online (Sandbox Code Playgroud)

你应该能够比较这两个

编辑:我去实际测试了它(sqlfiddle 今天不想工作):

测试