PostgreSQL NOW() - INTERVAL 和它的值有什么区别
PostgreSQL What's the difference between NOW() - INTERVAL and its value
我正在使用 PostgreSQL 12.6 和 TimescaleDB。
我有一个超表 raws
,其中包含类型为 timestamp without time zone NOT NULL
的字段 "time"
。
现在我有 2 个查询:
select * from raws where time > NOW() - INTERVAL '15 day';
这个给了我这个:
2021-04-08 00:00:00
2021-04-08 00:10:00
2021-04-08 00:20:00
NOW() 等于:2021-04-20 16:48:41.575584+02
但是现在,如果我取 NOW() - INTERVAL '15 day'
的值,即此时 2021-04-05 16:48:41.575584+02
,然后将其作为我的查询:
select * from raws where time > '2021-04-05 16:48:41.575584+02';
它不再有效:我得到 0 个结果,但没有错误。
那么是什么导致第二个查询失败?
TimescaleDB 或 PostgreSQL 有问题吗,还是我遗漏了一些格式?
所以我尝试在新数据库上重现该错误,一切正常。
当我从一个转储中导入我的所有数据时,查询 select * from raws where time > '2021-04-05 16:48:41.575584+02';
停止工作,所以即使我不知道到底是什么,那个转储也有问题。
我正在使用 PostgreSQL 12.6 和 TimescaleDB。
我有一个超表 raws
,其中包含类型为 timestamp without time zone NOT NULL
的字段 "time"
。
现在我有 2 个查询:
select * from raws where time > NOW() - INTERVAL '15 day';
这个给了我这个:
2021-04-08 00:00:00
2021-04-08 00:10:00
2021-04-08 00:20:00
NOW() 等于:2021-04-20 16:48:41.575584+02
但是现在,如果我取 NOW() - INTERVAL '15 day'
的值,即此时 2021-04-05 16:48:41.575584+02
,然后将其作为我的查询:
select * from raws where time > '2021-04-05 16:48:41.575584+02';
它不再有效:我得到 0 个结果,但没有错误。
那么是什么导致第二个查询失败?
TimescaleDB 或 PostgreSQL 有问题吗,还是我遗漏了一些格式?
所以我尝试在新数据库上重现该错误,一切正常。
当我从一个转储中导入我的所有数据时,查询 select * from raws where time > '2021-04-05 16:48:41.575584+02';
停止工作,所以即使我不知道到底是什么,那个转储也有问题。