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

PostgreSQL查询:筛选started_at与now()时间差≥300秒的数据

调整PostgreSQL查询以筛选时间差≥300秒的数据

嘿,我来帮你把这条查询调整到符合需求~你现在的语句已经算出了started_at到当前时间的秒数差,但还缺了筛选这个差值≥300秒的条件,我给你两种实现方式,选你觉得顺手的就行:

方式一:直接用秒数计算筛选

这种方式和你原来的计算逻辑保持一致,只是在WHERE子句里补上时间差的判断:

SELECT id, (extract(epoch from now()) - extract(epoch from started_at)) AS completed_time
FROM run_item
WHERE started_at IS NOT NULL 
  AND completed_at IS NULL
  AND (extract(epoch from now()) - extract(epoch from started_at)) >= 300;

方式二:用时间间隔比较(更易读)

PostgreSQL支持直接对时间差和INTERVAL类型做比较,写法更直观,还能避免重复计算:

SELECT id, EXTRACT(EPOCH FROM (NOW() - started_at)) AS completed_time
FROM run_item
WHERE started_at IS NOT NULL 
  AND completed_at IS NULL
  AND (NOW() - started_at) >= INTERVAL '300 seconds';

小补充:

  • 两种方式都能得到你要的结果,第二种用NOW() - started_at直接生成时间间隔,再和INTERVAL '300 seconds'对比,可读性更强,后续维护也方便——比如要改成筛选5分钟以上的数据,直接把条件改成>= INTERVAL '5 minutes'就行。
  • 我给计算出来的列加了AS completed_time的别名写法,这是更规范的SQL语法,能避免一些潜在的解析问题。

内容的提问来源于stack exchange,提问作者user3095193

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:39:08