Angenommen, ich habe ein Intervall wie
4 days 10:00:00
in postgres. Wie rechne ich das in eine Anzahl von Stunden um (in diesem Fall 106?) Gibt es eine Funktion oder sollte ich in die Kugel beißen und so etwas tun
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
quelle
quelle
Antworten:
Der wahrscheinlich einfachste Weg ist:
quelle
Wenn Sie eine Ganzzahl möchten, dh die Anzahl der Tage:
quelle
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(ich verwende Seite 9.4), daage(ts)
automatischCURRENT_DATE
nur ein Argument verwendet wird.Um die Anzahl der Tage zu ermitteln, ist der einfachste Weg:
Soweit ich weiß, würde es dasselbe zurückgeben wie:
quelle
'1 month 0 days'
, erhaltenextract(day from …)
Sie mit0
als Ergebnis.Die
::int
Umrechnung erfolgt nach dem Rundungsprinzip. Wenn Sie ein anderes Ergebnis wie Abrunden wünschen, können Sie die entsprechende mathematische Funktion wie zfloor
.quelle
Wenn Sie ein Tabellenfeld konvertieren:
Definieren Sie das Feld so, dass es Sekunden enthält:
Extrahieren Sie den Wert. Denken Sie daran, auf andere Weise zu besetzen . Wenn die Intervalle groß sind, können Sie eine unangenehme Überraschung erleben:
EXTRACT(EPOCH FROM field)::int
quelle
Hier ist die einfache Abfrage, die die Gesamtzahl der Tage berechnet.
quelle