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 データ型を返します。


どうやらこれは整数を与えているようです。これは、タイムスタンプが暗黙的に日付に変換されていることを意味します(または、実際にはすでに日付であり、タイムスタンプではありません)。

この場合、2 つの日付の間に日数があります。これを分単位で取得するには、1 日の分数を掛けます。

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 に答える