Das Ergebnis der Zeitstempelarithmetik ist ein INTERVAL-Datentyp. Sie haben dort ein INTERVALL TAG ZUM SEKUNDEN...
Wenn Sie die Anzahl der Minuten wollen, wäre eine Möglichkeit, EXTRACT()
zu verwenden , zum Beispiel:
select extract( minute from interval_difference ) * 60
+ extract( hour from interval_difference ) * 60
+ extract( day from interval_difference ) * 60 * 24
from ( select systimestamp - (systimestamp - 1) as interval_difference
from dual )
Alternativ können Sie einen Trick mit Datumsangaben verwenden:
select sysdate + (interval_difference * 1440) - sysdate
from (select systimestamp - (systimestamp - 1) as interval_difference
from dual )
Die "Trick"-Version funktioniert aufgrund der Rangfolge der Operatoren und der Unterschiede zwischen Datums- und Zeitstempelarithmetik.
Zunächst sieht die Operation so aus:
date + ( interval * number ) - date
Wie in der Dokumentation erwähnt:
Oracle wertet Ausdrücke innerhalb von Klammern aus, bevor es die außerhalb auswertet.
Die erste Operation führte also dazu, das Intervall mit 1.440 zu multiplizieren. Ein Intervall, d.h. ein diskreter Zeitraum, multipliziert mit einer Zahl, ist ein weiterer diskreter Zeitraum, siehe die Dokumentation zu datetime und Intervallarithmetik. Das Ergebnis dieser Operation ist also ein Intervall, das uns Folgendes übrig lässt:
date + interval - date
Der Plus-Operator hat hier Vorrang vor dem Minus. Der Grund dafür könnte sein, dass ein Intervall minus einem Datum eine ungültige Operation ist, aber die Dokumentation impliziert auch, dass dies der Fall ist (kommt nicht heraus und sagt es). Die erste durchgeführte Operation ist also Datum + Intervall. Ein Datum plus Intervall ist ein Datum. Verlassen Sie nur
date - date
Laut Dokumentation ergibt dies eine Ganzzahl, die die Anzahl der Tage darstellt. Sie haben das ursprüngliche Intervall jedoch mit 1.440 multipliziert, sodass dies jetzt das 1.440-fache der Anzahl an Tagen darstellt, die es sonst hätte. Sie haben dann die Anzahl der Sekunden übrig.
Es ist erwähnenswert, dass:
Wenn Intervallberechnungen einen datetime-Wert zurückgeben, muss das Ergebnis ein tatsächlicher datetime-Wert sein oder die Datenbank gibt einen Fehler zurück. Beispielsweise geben die nächsten beiden Anweisungen Fehler zurück:
Die "Trick"-Methode wird scheitern, selten, aber es wird immer noch scheitern. Wie immer ist es am besten, es richtig zu machen.