Digamos que eu tenha um intervalo como
4 days 10:00:00
no postgres. Como converter isso para um número de horas (106 neste caso?) Existe uma função ou devo morder a bala e fazer algo como
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
fonte
fonte
Respostas:
Provavelmente, a maneira mais fácil é:
fonte
Se você quiser um número inteiro, ou seja, número de dias:
fonte
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(estou usando a página 9.4), poisage(ts)
use automaticamenteCURRENT_DATE
quando apenas um argumento.Para obter o número de dias, a maneira mais fácil seria:
Tanto quanto eu sei, ele retornaria o mesmo que:
fonte
'1 month 0 days'
, usarextract(day from …)
será0
o resultado.A
::int
conversão segue o princípio do arredondamento. Se você deseja um resultado diferente, como arredondamento para baixo, pode usar a função matemática correspondente, comofloor
.fonte
Se você converter o campo da tabela:
Defina o campo para que ele contenha segundos:
Extraia o valor. Lembre-se de lançar para int de outra maneira, você pode obter uma surpresa desagradável quando os intervalos forem grandes:
EXTRACT(EPOCH FROM field)::int
fonte
Aqui está a consulta simples que calcula o total de dias.
fonte