首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgresSQL -约会很奇怪

PostgresSQL -约会很奇怪
EN

Stack Overflow用户
提问于 2019-01-17 14:06:40
回答 2查看 56关注 0票数 0

我需要为所有行创建select,它现在已经超过15分钟了。

代码语言:javascript
复制
SELECT last_answer_date FROM messages WHERE last_answer_date > NOW() - INTERVAL '15 minutes';

当我在16:51:00开始这个选择时,我得到了结果:

代码语言:javascript
复制
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:示例:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-17 14:23:45

我想这可能是你时区的问题。您可以使用show timezone;检查它,也可以简单地使用select now()查看它是否符合您的期望。

票数 2
EN

Stack Overflow用户

发布于 2019-01-17 14:28:55

如果您有一个包含大量数据的大表,则会遇到一些性能问题,因为当您调用

现在()-间隔'15分钟‘内部后置需要将您的间隔转换为日期后距

我认为一个更好的方法-你应该这样做,以提高性能,因为所有的日期都是长值,你应该比较它像长值。

代码语言:javascript
复制
-- 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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54237680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档