Nie używaj age()
funkcja do arytmetyki daty/czasu. Zwraca tylko wyniki „symboliczne”
(które są wystarczająco dobre do reprezentacji człowieka, ale prawie bez znaczenia dla obliczeń daty/czasu; w porównaniu ze standardową różnicą).
Standardowy operator różnicy (-
)
zwraca wyniki oparte na dniu dla obu date
, timestamp
i timestamp with time zone
(pierwszy zwraca dni jako int
, dwa ostatnie zwracają na podstawie dnia interval
s):
Z interwałów dziennych możesz wyodrębnić dni za pomocą extract()
funkcja:
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