我需要为所有行创建select,它现在已经超过15分钟了。
SELECT last_answer_date FROM messages WHERE last_answer_date > NOW() - INTERVAL '15 minutes';当我在16:51:00开始这个选择时,我得到了结果:
2019-01-17 16:25:00换句话说,我的意思是:
给我所有行where last_answer_date > 16:51:00 - 15 minutes (因为现在16:51:00)
告诉我所有的行,last_answer_date > 16:36:00 (因为现在16:51:00 - 15分钟= 16:36:00)
我得到了16:25:00但是16:25:00 < 16:36:00
编辑:当我将>改为<时,我得到了2019-01-16 17:50:27
EDIT2:示例:
SELECT insert_date FROM smev_messages WHERE insert_date < NOW() - INTERVAL '15 minutes'; now = 17:16

更改为SELECT insert_date FROM smev_messages WHERE insert_date > NOW() - INTERVAL '15 minutes';
17:17

发布于 2019-01-17 14:23:45
我想这可能是你时区的问题。您可以使用show timezone;检查它,也可以简单地使用select now()查看它是否符合您的期望。
发布于 2019-01-17 14:28:55
如果您有一个包含大量数据的大表,则会遇到一些性能问题,因为当您调用
现在()-间隔'15分钟‘内部后置需要将您的间隔转换为日期后距
我认为一个更好的方法-你应该这样做,以提高性能,因为所有的日期都是长值,你应该比较它像长值。
-- 15 minutes in millis = 900000
-- 15 minutes in secods = 900
-- Retrive all data inserted at latest 15 minutes
SELECT last_answer_date FROM messages WHERE (NOW() - last_answer_date) < 900;
-- Retrive all data inserted more than 15 minutes
SELECT last_answer_date FROM messages WHERE (NOW() - last_answer_date) > 900;https://stackoverflow.com/questions/54237680
复制相似问题