interval example ejemplos ejemplo date_trunc date_part datetime postgresql intervals

datetime - example - ¿Cómo convierto un intervalo en un número de horas con postgres?



interval postgresql (6)

Para obtener el número de días, la forma más fácil sería:

SELECT EXTRACT(DAY FROM NOW() - ''2014-08-02 08:10:56'');

Por lo que yo sé, devolvería lo mismo que:

SELECT (EXTRACT(epoch FROM (SELECT (NOW() - ''2014-08-02 08:10:56'')))/86400)::int;

Digamos que tengo un intervalo como

4 days 10:00:00

en postgres ¿Cómo puedo convertir eso en un número de horas (106 en este caso?) ¿Hay una función o debo morder la bala y hacer algo así como

extract(days, my_interval) * 24 + extract(hours, my_interval)


Probablemente la forma más fácil es:

SELECT EXTRACT(epoch FROM my_interval)/3600


Si convierte el campo de tabla:

  1. Defina el campo para que contenga segundos: CREATE TABLE IF NOT EXISTS test ( ... field INTERVAL SECOND(0) );
  2. Extrae el valor. Recuerde lanzar de otra manera, puede obtener una sorpresa desagradable una vez que los intervalos son grandes: EXTRACT(EPOCH FROM field)::int

Si quieres un número entero, es decir, el número de días:

SELECT (EXTRACT(epoch FROM (SELECT (NOW() - ''2014-08-02 08:10:56'')))/86400)::int


select floor((date_part(''epoch'', order_time - ''2016-09-05 00:00:00'') / 3600)), count(*) from od_a_week group by floor((date_part(''epoch'', order_time - ''2016-09-05 00:00:00'') / 3600));

La conversión ::int sigue el principio de redondeo. Si desea un resultado diferente, como redondear hacia abajo, puede usar la función matemática correspondiente, como el floor .


select date ''now()'' - date ''1955-12-15'';

Aquí está la consulta simple que calcula el número total de días.