Digamos que tengo un intervalo como
4 days 10:00:00
en postgres. ¿Cómo convierto eso en varias horas (106 en este caso?) ¿Hay una función o debo morder la bala y hacer algo como
extract(days, my_interval) * 24 + extract(hours, my_interval)
datetime
postgresql
intervals
agnul
fuente
fuente
Respuestas:
Probablemente la forma más fácil es:
fuente
Si quieres entero, es decir, número de días:
fuente
SELECT extract('epoch' FROM age('2014-08-02'::timestamp)) / 86400
(estoy usando la página 9.4), ya queage(ts)
automáticamente lo usoCURRENT_DATE
cuando solo hay un argumento.Para obtener la cantidad de días, la forma más fácil sería:
Hasta donde sé, devolvería lo mismo que:
fuente
'1 month 0 days'
, el usoextract(day from …)
le dará0
como resultado.La
::int
conversión sigue el principio de redondeo. Si desea un resultado diferente, como redondear hacia abajo, puede utilizar la función matemática correspondiente, comofloor
.fuente
Si convierte el campo de tabla:
Defina el campo para que contenga segundos:
Extrae el valor. Recuerde enviar a int de otra manera puede obtener una sorpresa desagradable una vez que los intervalos son grandes:
EXTRACT(EPOCH FROM field)::int
fuente
Aquí está la consulta simple que calcula el total de días.
fuente