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