以下两个逻辑条件(两个CreationDate值都是DateTime)有什么区别?
and abs(datediff(hour, a.CreationDate, e.CreationDate)) < 12以及:
and e.CreationDate > dateadd(hour, -12, a.CreationDate)
and e.CreationDate < dateadd(hour, 12, a.CreationDate)(是的,这是有区别的-这种变化产生了不同的结果,但我看不出是什么)
背景
最近的Meta.se上出现了问题关于“馆长”徽章,和12小时编辑窗口。这个问题激励我制作我以前写过的SQL查询的副本,并使新的副本“变量”大小的编辑窗口,而不是每边只需12个小时。实际上,我更改了以下代码:
and abs(datediff(hour, a.CreationDate, e.CreationDate)) < 12将是:
and e.CreationDate > dateadd(hour, -12, a.CreationDate)
and e.CreationDate < dateadd(hour, 12, a.CreationDate)(除了第二个语句中的12个值是变量)。
但是查询产生的结果略有不同.我真的很想知道为什么。我也不能决定哪个查询结果是正确的。我相信这必须归结为datediff逻辑中的一些东西..。它是否“四舍五入”了几个小时,这样它的结果就少了一点?
DateDiff:

DateAdd:

https://stackoverflow.com/questions/30144139
复制相似问题