You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何查询自上次运行后已超过设定间隔的记录

PostgreSQL 间隔查询可行方案

你遇到的类型不兼容问题本质是需要将整数类型的分钟数转换为PostgreSQL支持的interval时间间隔类型,再和timestamptz类型的processed_at做运算,以下是可直接落地的方案:

可用查询方案

  • 方案1:使用make_interval函数(可读性最高,推荐)
SELECT *
FROM 你的表名
-- 逻辑:上次处理时间 + 设定间隔 < 当前时间,说明已经超过间隔需要处理
WHERE processed_at < CURRENT_TIMESTAMP - make_interval(mins => frequency);

说明:将运算逻辑移到条件右侧是为了避免对左侧processed_at字段做函数运算,可直接命中processed_at字段的索引,大数据量表下性能更好。

  • 方案2:使用时间间隔乘法(写法更简洁)
SELECT *
FROM 你的表名
WHERE processed_at < CURRENT_TIMESTAMP - frequency * INTERVAL '1 minute';

特殊场景处理

如果存在首次运行、processed_at为NULL的未处理记录,可通过COALESCE兼容:

SELECT *
FROM 你的表名
WHERE COALESCE(processed_at, '1970-01-01'::timestamptz) < CURRENT_TIMESTAMP - make_interval(mins => frequency);

内容的提问来源于stack exchange,提问作者Petr Bělecký

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 13:36:03