Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgresSQL-日期工作异常_Sql_Postgresql_Timestamp - Fatal编程技术网

PostgresSQL-日期工作异常

PostgresSQL-日期工作异常,sql,postgresql,timestamp,Sql,Postgresql,Timestamp,我需要为所有行创建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 换句话说,我的意思是: 给我所有最后回答日期>16:51:00-15分钟的行,因为现在是16:51:00 给我所有的行`上次回答日期>16:36:

我需要为所有行创建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
换句话说,我的意思是:

给我所有最后回答日期>16:51:00-15分钟的行,因为现在是16:51:00

给我所有的行`上次回答日期>16:36:00,因为现在16:51:00-15分钟=16:36:00

我得到16:25:00但是16:25:00<16:36:00

编辑:当我改变>到现在-间隔'15分钟'

17:17


我想你的时区可能有问题。 你可以用show时区检查它;
或者直接使用select now,看看它是否符合您的期望。

我认为这可能是您的时区问题。 你可以用show时区检查它;
或者直接使用select now,看看它是否符合您的期望。

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

现在-间隔“15分钟”内部postgress需要将间隔转换为日期

我认为一个更好的方法是,您应该做类似的事情来提高性能,因为所有日期都是长值,您应该像长值一样进行比较

-- 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;

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

现在-间隔“15分钟”内部postgress需要将间隔转换为日期

我认为一个更好的方法是,您应该做类似的事情来提高性能,因为所有日期都是长值,您应该像长值一样进行比较

-- 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;

上次回答日期的数据类型是什么?timestamp还是timestamp?@a_horse_和_no_name timestamp您想要15分钟后插入的记录是15分钟后插入的还是最后15分钟后插入的记录?我希望在最后15分钟内插入的记录不包括在结果中。我想要获取插入日期早于现在减去15分钟的所有行上次应答日期的数据类型?timestamp还是timestamp?@a_horse_和_no_name timestamp你想要15分钟后插入的记录是15分钟后插入的还是最后15分钟后插入的记录?我希望最后15分钟内插入的记录不包括在结果中。我想获取插入日期比现在早15分钟的所有行坚信postgreSQL server正在我的机器上运行。但事实并非如此。我坚信postgreSQL服务器是在我的机器上运行的。但事实并非如此。