N'utilisez pas le age()
fonction pour l'arithmétique date/heure. Il ne fait que retourner des résultats "symboliques"
(qui sont assez bons pour la représentation humaine, mais presque dénués de sens pour les calculs de date/heure ; par rapport à la différence standard).
L'opérateur de différence standard (-
)
renvoie des résultats basés sur le jour pour les deux date
, timestamp
et timestamp with time zone
(le premier renvoie les jours sous la forme int
, les deux derniers renvoient un interval
basé sur le jour s):
À partir des intervalles basés sur les jours, vous pouvez extraire des jours avec le extract()
fonction :
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