我在SQL Server中有两个日期
@dt1 = 2018-03-15 11:12:10
@dt2 = 2018-03-15 11:12:45
我希望在SQL Server中忽略秒钟并仅考虑日期、小时和分钟,以便实现这个条件:(@dt1 = @dt2)
简而言之,我想要的是这个条件应该为真。
那么,我该如何做呢?
我在SQL Server中有两个日期
@dt1 = 2018-03-15 11:12:10
@dt2 = 2018-03-15 11:12:45
我希望在SQL Server中忽略秒钟并仅考虑日期、小时和分钟,以便实现这个条件:(@dt1 = @dt2)
简而言之,我想要的是这个条件应该为真。
那么,我该如何做呢?
所有这些对数值四舍五入的答案都忽略了我们可以直接询问两个值之间的分钟差,如果为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)
cast(getDate as date)
。