Powiedz, że mam przerwę w stylu
4 days 10:00:00
w postgres. Jak przekonwertować to na liczbę godzin (w tym przypadku 106?) Czy jest funkcja, czy powinienem ugryźć kulę i zrobić coś takiego
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
źródło
źródło
Odpowiedzi:
Prawdopodobnie najłatwiejszym sposobem jest:
źródło
Jeśli chcesz liczbę całkowitą, czyli liczbę dni:
źródło
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(używam strony 9.4), ponieważage(ts)
automatycznie używamyCURRENT_DATE
tylko jednego argumentu.Najłatwiejszym sposobem uzyskania liczby dni byłoby:
O ile wiem, zwróci to tak samo, jak:
źródło
'1 month 0 days'
, użycieextract(day from …)
da ci0
wynik.::int
Konwersji stosuje zasadę zaokrąglania. Jeśli chcesz uzyskać inny wynik, na przykład zaokrąglając w dół, możesz użyć odpowiedniej funkcji matematycznej, takiej jakfloor
.źródło
Jeśli konwertujesz pole tabeli:
Zdefiniuj pole tak, aby zawierało sekundy:
Wyodrębnij wartość. Pamiętaj, aby rzucać tak, aby w przeciwnym razie możesz otrzymać niemiłą niespodziankę, gdy interwały będą duże:
EXTRACT(EPOCH FROM field)::int
źródło
Oto proste zapytanie, które oblicza całkowitą liczbę dni.
źródło