dieses Schema in einer Postgres Datenbank Gegeben:Wie berechnet man den nächsten Geburtstag bei einem Geburtsdatum?
CREATE TABLE person (
id serial PRIMARY KEY,
name text,
birth_date date,
);
Wie würde ich die Tabelle abfragen, um den Tag der jeder Person nächsten Geburtstag nach dem heutigen Tag zu bekommen?
Zum Beispiel, wenn Bobs birth_date
ist 2000-06-01 dann wäre sein nächster Geburtstag 2016-06-01.
Hinweis: Ich bin nicht auf der Suche nach der birth_date
+ eine vordefinierte interval
sondern eher der nächste Jahrestag der Geburt einer Person.
ich das Äquivalent in Python geschrieben haben:
def next_birthday(self):
today = datetime.date.today()
next_birthday = self.birth_date.replace(year=today.year)
if next_birthday < today:
next_birthday = next_birthday.replace(year=today.year + 1)
return next_birthday
Allerdings Ich mag würde, um zu sehen, ob Postgres dies in einer leistungsfähigere Art und Weise tun.
@PetrHejda - diese Antwort wählt Geburtstage in einem bestimmten Zeitraum (1 Woche von heute). Ich freue mich darauf, den nächsten Geburtstag jedes Menschen zu feiern. – ghickman
@Shanimal - diese Antwort filtert Zeilen, während ich suche, den nächsten bevorstehenden Geburtstag für jede Person zu berechnen. – ghickman
Was ist mit 29. Februar, was sollte es zurückgeben? Wenn es im nächsten Jahr keinen 29. Februar gibt, sollte es am 28. Februar, 1. März oder am 29. Februar zurückkommen? – Peter