Не използвайте age()
функция за аритметика за дата/час. Той само връща "символични" резултати
(които са достатъчно добри за човешко представяне, но почти безсмислени за изчисления на дата/час; в сравнение със стандартната разлика).
Стандартният оператор за разлика (-
)
връща базирани на деня резултати и за двете date
, timestamp
и timestamp with time zone
(първото връща дни като int
, последните две връщат базиран на дни interval
s):
От дневните интервали можете да извлечете дни с extract()
функция:
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