Postgres има age() функция, която връща възрастта в години, месеци и дни въз основа на две дати.
Това работи добре, освен ако не искате да върнете възрастта само в години.
Например, просто искате да върнете възрастта на човек въз основа на рождения му ден. Искате нещо като 32 вместо 32 години 4 месеца 67 дни , което е и age() вероятно ще се върне.
За щастие има лесен начин да направите това в PostgreSQL.
Ако искате само възрастта в години, можете да използвате или extract() или date_part() за да получите годината от age() връщана стойност на функцията.
Ето пример, който използва date_part() функция:
SELECT date_part('year', age(timestamp '2003-12-27')); Резултат:
16.0
Ето как изглежда, когато го стартирам в Azure Data Studio.
Когато го стартирам в psql , разбрах това:
16
И двете extract() и date_part() връщат резултатите си, като използват типа данни с двойна точност.
Можете да преобразувате това в цяло число (или друг тип данни), ако е необходимо, като го добавите с ::int .
SELECT date_part('year', age(timestamp '2003-12-27'))::int; Резултат:
16