有时间的表如:15:30,要在15分钟的时间间隔内从表中选择数据但是只有可能,我试试:
select id from myTbl
where type = 2 and DATEDIFF(mi,my_time,LEFT(CAST(GETDATE() as time),5)) <= 15
例如,如果my_time = 15:55并且LEFT(CAST(GETDATE() as time),5)) = 16:45
作为回应我有-50且它的&lt; = 15但我只需要比较可能性,当我尝试ABS时它不帮助我,因为当响应的时间是-14 ABS取+ 14且<&lt; = 15。所以我有28分钟的间隔(-14和14)。是否可以避免所有负数?并且仅在可能的情况下进行比较
答案 0 :(得分:4)
select id
from myTbl
where type = 2
and DATEDIFF(mi,my_time,LEFT(CAST(GETDATE() as time),5)) <= 15
and DATEDIFF(mi,my_time,LEFT(CAST(GETDATE() as time),5)) >=0
答案 1 :(得分:4)
更好的方法就是......
SELECT id
FROM myTbl
WHERE [TYPE] = 2
AND my_time >= CAST(DATEADD(MINUTE, -15, GETDATE()) AS TIME)
AND my_time <= CAST(GETDATE() AS TIME)
避免在where子句的列上使用DATEDIFF和其他标量函数,因为它不允许查询优化器使用任何索引,即使有查询可以从中受益的索引,请阅读本文以获取更多信息{{ 3}}