几分钟后无法显示正确的增量

问题描述

created_at 键入时间戳,不带时区。

我需要获取当前日期和列 created_at

间的分钟增量

查询

select id,created_at,extract(minutes from (CURRENT_TIMESTAMP) - created_at) as delta
from shop_order order by created_at 

结果如下:

enter image description here

为什么在id为20的记录中,增量为19?

不同之处是 3天。为什么只显示19分钟?

解决方法

一个间隔(这是两个时间戳相减的结果)由几个“部分”(类似于date)组成,extract仅提取命名的部分,而不是该间隔的表示形式该单位。如果减法的结果是例如3 days 19 minutes提取将返回19分钟,类似于extract(year ...)extract(month ...)的工作方式。

您可以提取秒数,然后将其除以60,以获取以分钟为单位的总持续时间:

select id,created_at,extract(epoch from CURRENT_TIMESTAMP - created_at) / 60 as delta
from shop_order order 
by created_at