Nuestros programadores estrellas agotaron sus depósitos de café, en su búsqueda noche y día por la respuesta, hasta que Lola encontró la respuesta en GitHub y hoy la compartimos con nosotros.
Solución:
Simplemente restarlos:
SELECT ('2015-01-12'::date - '2015-01-01'::date) AS days;
El resultado:
days
------
11
SELECT
AGE('2012-03-05', '2010-04-01'),
DATE_PART('year', AGE('2012-03-05', '2010-04-01')) AS years,
DATE_PART('month', AGE('2012-03-05', '2010-04-01')) AS months,
DATE_PART('day', AGE('2012-03-05', '2010-04-01')) AS days;
esto te dará lleno años, meses, días… entre dos fechas:
age | years | months | days
-----------------------+-------+--------+------
1 year 11 mons 4 days | 1 | 11 | 4
Información fechada más detallada.
Pasé un tiempo buscando la mejor respuesta, y creo que la tengo.
Este sql le dará la cantidad de días entre dos fechas como integer
:
SELECT
(EXTRACT(epoch from age('2017-6-15', now())) / 86400)::int
..que, cuando se ejecute hoy (2017-3-28
), me proporciona:
?column?
------------
77
La idea errónea sobre la respuesta aceptada:
select age('2010-04-01', '2012-03-05'),
date_part('year',age('2010-04-01', '2012-03-05')),
date_part('month',age('2010-04-01', '2012-03-05')),
date_part('day',age('2010-04-01', '2012-03-05'));
..es que obtendrá la diferencia literal entre las partes de las cadenas de fecha, no la cantidad de tiempo entre las dos fechas.
ES DECIR:
Age(interval)=-1 years -11 mons -4 days;
Years(double precision)=-1;
Months(double precision)=-11;
Days(double precision)=-4;
Te mostramos comentarios y valoraciones
Si te animas, tienes la habilidad dejar un artículo acerca de qué te ha parecido este artículo.