首页 > 解决方案 > 在 postgres 中选择日期时间

问题描述

必须在这里遗漏一些非常简单的东西。也许有人可以回答这个问题。您想从日期时间戳中选择到现在。为什么 where 子句不返回任何内容?

select * from xyz where ('2020-01-29 04:18:00-06'::timestamptz > CURRENT_TIMESTAMP);

什么时候

select CURRENT_TIMESTAMP;
       current_timestamp
-------------------------------
 2020-01-29 04:47:06.011133-06
(1 row)

Time: 0.258 ms

在 PostgreSQL 中获取从某个时间到当前时间的每一行以查看已添加或新/更改的内容应该不难。

我在这里的帮助下找到了这个问题的答案。我没有发布的第一次尝试是在使用之间。应该是这样使用的。需要从 where 子句中删除时间戳并使用 BETWEEN!

TABLENAME.COL-NAME-FOR-TIMESTAMP BETWEEN '2020-01-29 04:18:00-06' AND CURRENT_TIMESTAMP

TABLENAME.COL-NAME-FOR-TIMESTAMP 应该是您为日期时间引用的表中的列。

希望这对某人有帮助!

标签: postgresqldatetimeselect

解决方案


解释是您当前的时间戳(在您的 Postgres 服务器的时区中)已于 2020 年 1 月 29 日凌晨 4:18 过去。尝试将您的时区设置为应该使您当前的查询通过的时间,例如

SET timezone = 'America/Los_Angeles';  -- 2:58 AM as of the time this answer was posted
SELECT * FROM xyz WHERE '2020-01-29 04:18:00-06'::timestamptz > CURRENT_TIMESTAMP;

我怀疑这里的疑问是您希望您的 Postgres 服务器设置为某个时区,因此您应该对此进行调查。


推荐阅读