Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Diff. zwischen Daten - SQL plus

Der Titel der Frage enthält "SQL plus", was für mich Oracle impliziert.

Oracle hat keine DATEDIFF-Funktion. Die einfachste Methode, um mit Oracle die Anzahl der Tage zwischen 2 Daten zu bestimmen, besteht darin, ein Datum vom anderen zu subtrahieren.

Select item, datebought, datesold, datesold-datebought as days from auctions;

Oracle speichert sowohl Datums- als auch Uhrzeitinformationen in einem Datumsfeld. Es ist üblich, Datumsangaben in Datumsfeldern in Oracle auf Mitternacht gekürzt zu speichern, wenn Sie sich nicht um die Uhrzeit kümmern.

Wenn Ihre Datumsangaben bereits auf Mitternacht gekürzt sind, ist der berechnete Wert eine ganze Zahl.

Wenn Ihre gespeicherten Daten jedoch Zeitinformationen enthalten, möchten Sie den Wert möglicherweise abschneiden, um einen ganzzahligen Wert zu erhalten. Ich vermute, Sie möchten jedes Datum vor der Subtraktion abschneiden, so dass, wenn es an einem Tag gekauft wird, der nächste Tag jederzeit als 1 Tag zählen würde. Oracle kürzt Datumsangaben auf Mitternacht.

select item, datebought, datesold, trunc(datesold)-trunc(datebought) as days from auctions;

Ich stimme WarrenT zu, dass Ihre Tabelle keine denormalisierte Tagesspalte haben sollte.