Saltar al contenido

¿Cómo calcular la diferencia de FECHA en PostgreSQL?

Posterior a observar en diversos repositorios y sitios webs al concluir dimos con la solución que te compartimos aquí.

Solución:

Su cálculo es correcto para DATE tipos, pero si sus valores son marcas de tiempo, probablemente debería usar EXTRACT (o DATE_PART) para asegurarse de obtener solo la diferencia en completo días;

EXTRACT(DAY FROM MAX(joindate)-MIN(joindate)) AS DateDifference

Un SQLfiddle para probar. Tenga en cuenta que la diferencia de marca de tiempo es 1 segundo menos que 2 días completos.

CAST ambos campos al tipo de datos FECHA y puede usar un signo menos:

(CAST(MAX(joindate) AS date) - CAST(MIN(joindate) AS date)) as DateDifference

Caso de prueba:

SELECT  (CAST(MAX(joindate) AS date) - CAST(MIN(joindate) AS date)) as DateDifference
FROM 
    generate_series('2014-01-01'::timestamp, '2014-02-01'::timestamp, interval '1 hour') g(joindate);

resultado: 31

O crea una función fechadoiff():

CREATE OR REPLACE FUNCTION datediff(timestamp, timestamp) 
RETURNS int 
LANGUAGE sql 
AS
$$
    SELECT CAST($1 AS date) - CAST($2 AS date) as DateDifference
$$;

Así es como suelo hacerlo. Una simple perspectiva de número de días de B menos A.

DATE_PART('day', MAX(joindate) - MIN(joindate)) as date_diff

Si te apasiona la programación, puedes dejar una crónica acerca de qué te ha parecido este tutorial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *