首页 > 解决方案 > PostgreSQL 查询经过的时间间隔

问题描述

我正在尝试在 PostgreSQL 数据库中查询从上次运行后间隔已过的行。用于此目的的主要列是processed_atastimestamptzfrequency(以分钟为单位) as integer

我在操作员方面失败了,因为他们中没有多少人可以一起操作时间戳和整数。

有人可以提出一个可以解决这个问题的查询吗?非常感谢您的帮助

标签: postgresql

解决方案


从这里日期/时间运算符

时间戳+间隔→时间戳

为时间戳添加间隔

时间戳“2001-09-28 01:00”+ 间隔“23 小时”→ 2001-09-29 00:00:00


select now() + (10::varchar || ' min')::interval;
           ?column?            
-------------------------------
 2021-10-15 09:05:37.927163-07


--Or in your case. If I'm following you are adding the interval.

select processed_at + (frequency::varchar || ' min')::interval;

该查询采用分钟的整数值并将其转换为可以添加到时间戳的分钟间隔。

进一步的解释,||是 Postgres 的连接操作符和::varchar::interval是转换的速记。

更新

我一直忘记make_*()日期/时间/间隔的功能

--A shorter version

select processed_at + make_interval(mins => frequency);

保存所有的铸件。


推荐阅读