Скажем, у меня есть интервал, как
4 days 10:00:00
в postgres. Как я могу преобразовать это в количество часов (106 в данном случае?) Есть ли функция или я должен укусить пулю и сделать что-то вроде
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
источник
источник
Ответы:
Вероятно, самый простой способ это:
источник
Если вы хотите целое число, то есть количество дней:
источник
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(я использую Pg 9.4), так какage(ts)
автоматически используется,CURRENT_DATE
когда только один аргумент.Чтобы узнать количество дней, проще всего было бы:
Насколько я знаю, он вернется так же, как:
источник
'1 month 0 days'
, использованиеextract(day from …)
даст вам0
в качестве результата.::int
Преобразования следует принципу округления. Если вам нужен другой результат, такой как округление вниз, вы можете использовать соответствующую математическую функцию, напримерfloor
.источник
Если вы конвертируете поле таблицы:
Определите поле так, чтобы оно содержало секунды:
Извлеките значение. Не забывайте приводить к int другим, вы можете получить неприятный сюрприз, когда интервалы будут большими:
EXTRACT(EPOCH FROM field)::int
источник
Вот простой запрос, который вычисляет общее количество дней.
источник