Tage bis zum Geburtstag

Hallo zusammen,

ich hätte mal wieder eine Frage an das Forum.

Ich möchte die Tage und Monate bis zu einem Geburtstag herausfinden.

Die Tabelle ist folgendermaßen aufgebaut:

Tabelle: t_person

id | name | geburtsdatum

1 | name1 | 2001-02-02
2 | name2 | 2002-03-03

Das Feld geburtsdatum ist vom Typ date.


Mir ist die Funktion age bekannt und ich kann das alter einer Person bestimmen.

SELECT age(geburtsdatum , current_date) from t_person;

Leider habe ich keine Idee, wie ich die Tage bis zum nächsten Geburtstag bestimmen kann!

Kann ich dies mit der Funktion Extract erreichen?

Danke für die Hilfe

ads=# select '2009-12-31'::date - now()::date;
 ?column?
----------
      116
(1 row)

Hallo,

danke für die schnelle antwort.
Ich glaube das ich mich nicht klar ausgedrückt habe. Entschuldigung!

Ich will das Datum, den Monat und den Tag, aus der Tabelle t_person verwenden und das angebene Jahr durch das jetzige Jahr erstzen.

Sorry für die lückanhafte Frage.

Ja. Und mit etwas Mathe:

test=*# select * from personen ;
  name   | geburtsdatum
---------+--------------
 person1 | 1966-07-01
 person2 | 2000-09-10
(2 Zeilen)

Zeit: 0,480 ms
test=*# select name, age((case when (geburtsdatum + extract(year from age(geburtsdatum)) * '1 year'::interval) > current_date then geburtsdatum + extract(year from age(geburtsdatum)) * '1 year'::interval else geburtsdatum + extract(year from age(geburtsdatum)) * '1 year'::interval + '1 year'::interval end), current_date) from personen;
  name   |      age
---------+----------------
 person1 | 9 mons 25 days
 person2 | 4 days
(2 Zeilen)

Zeit: 0,840 ms

Man könnte die Spalte natürlich noch etwas sinnvoller betiteln…

Andreas

Vielen Dank.

Es funktioniert.