Não use o
age()
função para aritmética de data/hora. Ele apenas retorna resultados "simbólicos"
(que são bons o suficiente para representação humana, mas quase sem sentido para cálculos de data/hora; em comparação com a diferença padrão). O operador de diferença padrão (
-
)
retorna resultados baseados em dia para date
, timestamp
e timestamp with time zone
(o primeiro retorna dias como int
, os dois últimos retornam interval
baseado em dia s):A partir dos intervalos baseados em dias, você pode extrair dias com o
extract()
função:select current_date - '2017-01-01',
extract(day from now()::timestamp - '2017-01-01 00:00:00'),
extract(day from now() - '2017-01-01 00:00:00Z');
http://rextester.com/RBTO71933