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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何比较sql server中忽略秒的两个日期相关的知识,希望对你有一定的参考价值。

我在SQL Server中有两个日期

@dt1 = 2018-03-15 11:12:10
@dt2 = 2018-03-15 11:12:45

我想要(@dt1 = @dt2)

这种情况应该是真的。

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

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

答案

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

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

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

另一答案

这应该适合你。

@dt1 = SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, yourcolumn), 0)
@dt2 = SELECT DATEADD(MINUTE, DATEDIFF(MINUTE, 0, yourcolumn), 0)

IF @dt1 = @dt2
BEGIN

END
另一答案

比较日期时间,向下舍入到分钟:

DATEDIFF(MINUTE, @d1, @d2)

当且仅当值因分钟而异时,这将是真实的。

另一答案
@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)

你应该能够比较这两者

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

test

另一答案

这是你的解决方案:How can I truncate a datetime in SQL Server?

简而言之,这取决于您的版本。在SQL Server 2008中有cast(getDate as date)

以上是关于如何比较sql server中忽略秒的两个日期的主要内容,如果未能解决你的问题,请参考以下文章

如何在SQL Server中选择特定日期的行,忽略时间。

SQL Server:仅比较月份和日期 - SARGable

在 T-SQL 中比较日期,忽略时间部分

sql server中datetime字段只取年月日如2006-04-21,默认值如何设置?getdate()得到的是包含时分秒的时间。

将日期字符串与 SQL Server 中的日期时间进行比较?

SQL Server——如何指定日期格式