从两个 varchar(2) 列计算时间差

Calculating Time difference from two varchar(2) columns

我有两个变量,它们都是 varchar(2),我正在尝试计算时差。

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

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

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

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 评论说这甚至可以在不使用日期的情况下实现,并且默认情况下将使用当前日期。虽然我当前的查询似乎是正确的,但更精简的替代方法是完全省略虚拟日期。