计算两个varchar(2)列的时差

时间:2017-03-27 11:59:07

标签: sql oracle date-arithmetic

我有两个变量varchar(2),我正在尝试评估时差。

started := 13:42:09
finished: = 13:53:51

有人可以建议在SQL中执行此操作的最佳方法吗?

1 个答案:

答案 0 :(得分:0)

将日期存储为字符串不仅是一个坏主意,将时间存储为字符串是一个特别糟糕的想法,因为很难在它们之间找到差异。在下面的查询中,我求助于在某一天创建日期,但是在字符串列指定的开始和结束时间。

select 24 * 60 *
       (to_date ('06-Jan-2010' || ' ' || finished, 'dd-mon-yyyy hh24:mi:ss') -
        to_date ('06-Jan-2010' || ' ' || started, 'dd-mon-yyyy hh24:mi:ss')) as diff_in_minutes
from dual

在Oracle中减去日期应该产生它们之间的天数。乘以24*60应该会产生几分钟的差异。

修改

用户@Ben评论说这可以在不使用日期的情况下实现,并且默认情况下将使用当前日期。虽然我当前的查询似乎是正确的,但更简洁的替代方法是完全省略虚拟日期。