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