问题描述
列 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
提取将返回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