如何查找2个时间戳之间的差异|甲骨文

问题描述 投票:0回答:1

我刚刚遇到一个问题,列的

data type
varchar2(20)

该列包含

timestamp
,属于
varchar2(20)

我需要如何减去两个时间戳才能找到差异

表:

emp
->
dtime_details

dtime_details
2021-03-01 08:36:00
2021-03-01 17:40:00

预期产出

9
(小时)

dtime_details
的数据类型为
varchar2(20)

时,我需要如何编写查询

如果它的

data type
timestamp
,那么很容易,只需要在两者之间
minus
即可。

oracle
1个回答
0
投票

不要将日期和时间存储为字符串。将其存储为:

  • DATE
    如果它有日期和时间部分(但没有小数秒);
  • TIMESTAMP(0)
    ,如果它包含日期和时间组件(但没有小数秒)并且您希望将其视为
    TIMESTAMP
    而不是
    DATE
  • TIMESTAMP
    如果有日期、时间和小数秒。

如果您确实有一个字符串(没有),则将其转换为上述数据类型之一并减去:

SELECT TRUNC(
         (
           TO_DATE('2021-03-01 17:40:00', 'YYYY-MM-DD HH24:MI:SS')
           - TO_DATE('2021-03-01 08:36:00', 'YYYY-MM-DD HH24:MI:SS')
         ) * 24
       ) AS hours_diff
FROM   DUAL;

输出:

HOURS_DIFF
9

小提琴

© www.soinside.com 2019 - 2024. All rights reserved.