几分钟内未显示正确的增量

Not show correct delta in minutes

created_at 类型 时间戳 没有时区。

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

之间的增量(以分钟为单位)

查询:

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

结果如下:

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

相差3 天。为什么只显示 19 分钟?

一个区间(减去两个时间戳的结果)由几个“部分”组成(类似于date)并且extract只提取命名部分,而不是表示该单位的间隔。如果减法的结果是例如3 days 19 minutes 提取将 return 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