Använd inte age()
funktion för datum/tid aritmetik. Den returerar bara "symboliska" resultat
(som är tillräckligt bra för mänsklig representation, men nästan meningslösa för datum/tid beräkningar; jämfört med standardskillnaden).
Standard differensoperatorn (-
)
returnerar dagsbaserade resultat för båda date
, timestamp
och timestamp with time zone
(den förstnämnda returnerar dagar som int
, de två sistnämnda returnerar dagsbaserat interval
s):
Från de dagsbaserade intervallen kan du extrahera dagar med extract()
funktion:
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