Postgres ma age() funkcja zwracająca wiek w latach, miesiącach i dniach na podstawie dwóch dat.
Działa to dobrze, chyba że chcesz zwrócić tylko wiek w latach.
Na przykład chcesz po prostu zwrócić wiek osoby na podstawie jej urodzin. Chcesz coś takiego jak 32 zamiast 32 lata 4 mon 67 dni , czyli age() prawdopodobnie wróci.
Na szczęście istnieje prosty sposób na zrobienie tego w PostgreSQL.
Jeśli chcesz tylko wieku w latach, możesz użyć extract() lub date_part() aby uzyskać rok z age() wartość zwracana przez funkcję.
Oto przykład, który używa date_part() funkcja:
SELECT date_part('year', age(timestamp '2003-12-27')); Wynik:
16.0
Tak to wygląda, gdy uruchamiam go w Azure Data Studio.
Kiedy uruchamiam go w psql , rozumiem:
16
Oba extract() i date_part() zwracają swoje wyniki przy użyciu typu danych podwójnej precyzji.
W razie potrzeby możesz przekonwertować to na liczbę całkowitą (lub inny typ danych), dołączając do niej ::int .
SELECT date_part('year', age(timestamp '2003-12-27'))::int; Wynik:
16