如何从字段中减去具有时间戳的系统并获得小时和分钟

时间:2013-06-05 19:12:38

标签: sql oracle oracle11g

这是我当前的查询

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并在小时和分钟内获得结果 我怎么能实现这个目标呢?

2 个答案:

答案 0 :(得分:1)

只需从另一个

中减去一个
select sysdate - systimestamp from dual;

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


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

如果是这种情况,您可以获得两个日期之间的天数;乘以一天中的分钟数,以便在几分钟内完成:

select ( sysdate - systimestamp ) * 60 * 24 from dual;

答案 1 :(得分: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'

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