我将日期存储为 bigint 在我的表中,我正在尝试选择超过 30 天的记录。我在 SO 和 Google 上看到了大量与这个问题相关的问题,但我没有找到我需要的东西。
这是我所拥有的,这似乎非常低效:
SELECT
COUNT(*)
FROM
alert
WHERE
('1969-12-31 19:00:00 GMT'::timestamp + (alert.mytstamp::text)::interval) < (localtimestamp - INTERVAL '30 days')
据我了解,它将 bigintmytstamp
字段转换为时间戳,以便将其与“30 天前”时间戳进行比较。它对表中的每条记录执行此操作:(。将当前时间戳 - 30 天转换为一次 bigint 似乎更有效,然后将其与我所有的 bigint 日期进行比较。
我的 SQL 技能很弱,所以放轻松:)。谢谢您的帮助。