Ich habe eine Tabelle wie folgt:
Filename - varchar
Creation Date - Date format dd/mm/yyyy hh24:mi:ss
Oldest cdr date - Date format dd/mm/yyyy hh24:mi:ss
Wie kann ich die Differenz in Stunden, Minuten und Sekunden (und möglicherweise Tagen) zwischen den beiden Daten in Oracle SQL berechnen?
Vielen Dank
oracle
date-arithmetic
Steve
quelle
quelle
Antworten:
Sie können Daten in Oracle subtrahieren. Dies gibt Ihnen den Unterschied in Tagen. Mit 24 multiplizieren, um Stunden zu erhalten, und so weiter.
Wenn Ihr Datum als Zeichendaten gespeichert ist, müssen Sie es zuerst in einen Datumstyp konvertieren.
Hinweis :
Diese Antwort gilt für Daten, die durch den Oracle-Datentyp dargestellt werden
DATE
. Oracle hat auch einen DatentypTIMESTAMP
, der auch ein Datum (mit Uhrzeit) darstellen kann. Wenn SieTIMESTAMP
Werte subtrahieren , erhalten Sie eineINTERVAL
; Verwenden Sie dieEXTRACT
Funktion , um numerische Werte zu extrahieren .quelle
INTERVAL
Datentyp, keinen einfachen Float.DATE
, erhalten Sie die Anzahl der Tage (alsNUMBER
). Wenn Sie jedochTIMESTAMP
Werte subtrahieren , erhalten SieINTERVALDS
. Wahrscheinlich arbeiten Sie mitTIMESTAMP
und nicht mitDATE
Werten. Ich habe die Antwort bearbeitet.DATE
undTIMESTAMP
Datentypen haben eine Zeit (Stunden, Minuten und Sekunden) Komponente.TIMESTAMP
hat auch eine Bruchteilsekunden-Zeitkomponente (und möglicherweise Zeitzonenkomponenten).Hoffe das hilft.
quelle
So erhalten Sie das Ergebnis in Sekunden:
Überprüfen Sie [ https://community.oracle.com/thread/2145099?tstart=0 weibl. [1 ]
quelle
Dadurch erhalten Sie drei Spalten als Tage, Stunden und Minuten.
quelle
Sie können dies auch versuchen:
Es zeigt die Zeit in besser lesbarer Form an, z. B.: 00:01:34. Wenn Sie auch Tage benötigen, können Sie DD einfach zur letzten Formatierungszeichenfolge hinzufügen.
quelle
Mit der Funktion to_timestamp können Sie die Daten in Zeitstempel konvertieren und eine Subtraktionsoperation ausführen.
Etwas wie:
quelle
Berechnen Sie das Alter von HIREDATE bis zum Systemdatum Ihres Computers
quelle
quelle
In Orakel 11g
quelle
Wenn Sie zwei Daten aus ' your_table ' auswählen und das Ergebnis auch als einspaltige Ausgabe sehen möchten (z. B. ' Tage - hh: mm: ss '), können Sie so etwas verwenden. Zuerst können Sie das Intervall zwischen diesen beiden Daten berechnen und anschließend alle benötigten Daten aus diesem Intervall exportieren:
Und das sollte Ihnen folgendes Ergebnis bringen: 0 Tage - 1:14:55
quelle
quelle
Wenn Sie etwas möchten, das etwas einfacher aussieht, versuchen Sie dies, um Ereignisse in einer Tabelle zu finden, die in der letzten Minute aufgetreten sind:
Mit diesem Eintrag können Sie mit den Dezimalwerten herumspielen, bis Sie den gewünschten Minutenwert erhalten. Der Wert .0007 beträgt 1 Minute, was die signifikanten Ziffern des Systems betrifft. Sie können ein Vielfaches davon verwenden, um einen beliebigen anderen Wert zu erhalten:
Ergebnis ist 1 (Minute)
Dann ist es einfach zu überprüfen
quelle
quelle
quelle
quelle
Dies zählt die Zeit zwischen den Daten:
quelle
Hier ist eine weitere Option:
quelle
Einzelne Abfrage, die die Zeitdifferenz zweier Zeitstempelspalten zurückgibt:
quelle
Wenn Sie eine Datumsverschiebung von der Verwendung von Tabelle und Spalte erhalten möchten.
quelle