我正在使用下面的sql从1分钟后创建的表中获取记录
SELECT Id,OrderNumber FROM ActivationRequest
WHERE Processed =0 AND
DateCreated <= DATEADD(minute,Convert(int,-1), GETDATE())
DateCreated:将插入日期类型为Datetime且在插入具有秒和毫秒的长datettime值时的列
在执行选择操作时,我们可以以某种方式避免秒和毫秒的部分吗?
示例:DateCreated值2018-12-07 07:08:41.703
但是当我在2018-12-07 07:08:51.597进行上述选择sql时,它返回了0条记录。由于datetime的毫秒部分仅为.597
所以我该如何避免秒和毫秒的部分,而只需在where条件下检查小时和分钟的部分。 我需要获取最后一分钟添加的所有记录,而与秒和毫秒值无关
答案 0 :(得分:2)
您可以四舍五入到最近的分钟:
SELECT Id, OrderNumber
FROM ActivationRequest
WHERE
Processed = 0 AND
DateCreated <= DATEADD(mi, DATEDIFF(mi, 0, GETDATE()) + 1, 0);
以下是一个演示,演示了与GETDATE()
一起使用的上述演算背后的逻辑:
上述查询应具有相当好的性能,因为它可以在DateCreated
上使用索引。
答案 1 :(得分:0)
试试这个..
SELECT Id, OrderNumber
FROM ActivationRequest
WHERE
Processed = 0 AND
FORMAT(DateCreated,'dd:mm:yyyy:hh:mm') = FORMAT(GETDATE(),'dd:mm:yyyy:hh:mm');