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

Redshift中如何计算两个日期列的分钟差值?

计算两个日期时间的分钟差值问题

你的原查询只提取了日期时间中的分钟字段值做差,完全忽略了天、小时的差距,这就是得不到正确结果的原因。比如例子里两个时间的分钟数都是0,相减后绝对值还是0,自然出不来1440分钟。

正确的查询方法

在PostgreSQL中,直接计算两个日期时间的差值,再转换为分钟即可,推荐两种简洁写法:

方法1:利用Epoch秒数转换

select 
  n.ideal_date,
  n.actual_date,
  abs(extract(epoch from (n.actual_date - n.ideal_date)) / 60) as minutes
from table_date n
  • 原理:actual_date - ideal_date得到两个时间的间隔,extract(epoch from ...)把这个间隔转换成总秒数,除以60就得到总分钟数,abs()确保结果为正。

方法2:直接提取间隔的各时间单位计算

select 
  n.ideal_date,
  n.actual_date,
  abs(
    date_part('day', n.actual_date - n.ideal_date)*24*60 +
    date_part('hour', n.actual_date - n.ideal_date)*60 +
    date_part('minute', n.actual_date - n.ideal_date)
  ) as minutes
from table_date n
  • 原理:分别提取间隔的天数、小时数、分钟数,转换成分钟后相加,再取绝对值。

验证例子

对于你提供的id=58的记录,两个时间相差1天:

  • 方法1中,间隔的Epoch秒数是86400,除以60得到1440分钟;
  • 方法2中,天数是1,12460=1440,小时和分钟都是0,总和也是1440分钟,和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:40:57