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