0

这是我当前的查询

SELECT 
        TABLE1.OUT_NO,
        To_char(sysdate, 'MM-DD-YYYY HH24:MI:SS') as "Current_Time",
        To_char(TABLE2.time_stamp, 'MM-DD-YYYY HH24:MI:SS') as "Recorded_Time"
FROM TABLE1 TABLE1 LEFT OUTER JOIN TABLE2 TABLE2 ON TABLE1.OUT_NO = TABLE2.OUT_NO
WHERE TABLE1.OUT_NO > '12345'

我需要减去Current_time-Recorded_Time并得到小时和分钟的结果。
我怎样才能做到这一点?

4

2 回答 2

1

只需从另一个中减去一个

select sysdate - systimestamp from dual;

确保它们仍然是 DATE 和 TIMESTAMP,不要先将它们转换为字符。这将返回一个 INTERVAL 数据类型。


显然这给了你一个整数,这意味着你的时间戳被隐式转换为日期(或者实际上已经是日期而不是时间戳)。

如果是这种情况,您有两个日期之间的天数;乘以一天中的分钟数,以分钟为单位:

select ( sysdate - systimestamp ) * 60 * 24 from dual;
于 2013-06-05T19:19:46.997 回答
0

使用 datediff() 内置函数

    SELECT 
    TABLE1.OUT_NO,
    To_char(sysdate, 'MM-DD-YYYY HH24:MI:SS') as "Current_Time",
    To_char(TABLE2.time_stamp, 'MM-DD-YYYY HH24:MI:SS') as "Recorded_Time",
    datediff(mi,time_stamp,getdate()) as DiffInTime
    FROM TABLE1 TABLE1 LEFT OUTER JOIN TABLE2 TABLE2 ON TABLE1.OUT_NO = TABLE2.OUT_NO
    WHERE TABLE1.OUT_NO > '12345'

将在几分钟内显示结果。从那里跳舞。

于 2013-06-05T19:29:31.970 回答