gpt4 book ai didi

sql - PostgreSQL 比较两个 timestamptz

转载 作者:行者123 更新时间:2023-11-29 12:26:05 39 4
gpt4 key购买 nike

我正在对使用日期 (timestamptz) 用作光标的数据提要进行分页。提要由多种不同类型的帖子组成。

其中一个查询(简化)如下所示:

SELECT
a.id, a.title,
EXTRACT (EPOCH FROM a.created) * 1000 AS stamp
FROM
table a
ORDER BY
a.created DESC
LIMIT 2

哪个返回:

722  Hello text 1   1460040343523.98
721 Hello text 2 1460027168427.71

现在,(无论出于何种原因)我只想获取 id 721 之前的帖子,我这样做:

SELECT
a.id, a.title,
EXTRACT (EPOCH FROM a.created) * 1000 AS stamp
FROM
table a
WHERE EXTRACT(EPOCH FROM a.created) * 1000 > 1460027168427.71
ORDER BY
a.created DESC
LIMIT 2

注意 1460027168427.71 > 1460027168427.71

结果:(无差异)

722  Hello text 1   1460040343523.98
721 Hello text 2 1460027168427.71

时间戳的比较不起作用,表现得像 >= 而像 >

请注意,我已尝试仅提取 EPOCH,比较没有任何类型转换的日期 - 结果相同。但是我确实注意到,当我得到以下类型的日期字符串时:

2016-04-07T11:06:08.427Z

它最终比较

2016-04-07T11:06:08.427Z > 2016-04-07 11:06:08.427713+00

这让我觉得这是一个精度问题,因为 427000 实际上小于 427713

对于这个(看似基本的)问题的任何帮助,我深表感谢。在每个人都告诉我使用 ID 来遍历提要之前 - 我不能,因为提要是由多个不同的源构建的 - 时间戳作为共同点。

最佳答案

我知道已经晚了,但我今天的提要查询遇到了同样的问题:

# ...
WHERE post."updatedAt" > '2019-07-29 13:57:47'

也像 >= 一样返回

解决方案是使用文档中的日期/时间运算符增加一秒:https://www.postgresql.org/docs/9.4/functions-datetime.html

最后的地方看起来像:

# ...
WHERE post."updatedAt" > TIMESTAMP '2019-07-29 13:57:47' + INTERVAL '1 second'

关于sql - PostgreSQL 比较两个 timestamptz,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496550/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com