kommende 10 Geburtstage anzeigen

kommende 10 Geburtstage anzeigen

am 29.01.2008 12:59:27 von Tobias Winkelhauser

ich möchte gerne eine Liste ausgeben in der die nächsten 10 Geburtstage
angezeigt werden.

das Geburtsdatum ist als Typ date gespeichert.

$sql = "select user from liste ORDER BY geburtsdatum DESC LIMIT 10

So bekomme ich zwar eine Liste, doch die ist nicht ganz das ware

Für einen Hinweis wäre ich sehr dankbar

Tobi

Re: kommende 10 Geburtstage anzeigen

am 29.01.2008 13:11:27 von Christian Kirsch

Tobias Winkelhauser schrieb:
> ich möchte gerne eine Liste ausgeben in der die nächsten 10 Geburtstage
> angezeigt werden.
>
> das Geburtsdatum ist als Typ date gespeichert.
>
> $sql = "select user from liste ORDER BY geburtsdatum DESC LIMIT 10
>
> So bekomme ich zwar eine Liste, doch die ist nicht ganz das ware

diese Ortografie auch nicht, aber sei's drum.

>
> Für einen Hinweis wäre ich sehr dankbar
>

Tja, was soll man dazu sagen? Du verrätst nicht, was Dir an dieser Liste
nicht gefällt. Du verrätst nix über Deine Tabellenstruktur. Eigentlich
verrätst Du gar nix.

Deshalb nach einem Blick in die staubige Kugel: Wenn Du mit "nächste"
die Geburtstage meinst, die ab heute stattfinden, dann wäre es
vielleicht sinnvoll, erstmal zu überlegen, wie *Du* entscheidest, was
die nächsten sind. Ein einfaches (und falsches, weil es spätestens im
Dezember schief geht) Kriterium wäre, dass der Monat des Geburtstags
größer oder gleich dem aktuellen ist.

Mit MySQL hat das Ganze allerdings m.E. gar nix zu tun. Ich nehme für
sowas Apples iCal. Da muss ich nur auf den Kalender gucken und sehe, wer
in diesem Monat Geburtstag hat.

Re: kommende 10 Geburtstage anzeigen

am 29.01.2008 13:48:21 von Andreas Kretschmer

Andreas
--
Andreas Kretschmer
Linux - weil ich es mir wert bin!
GnuPG-ID 0x3FFF606C http://wwwkeys.de.pgp.net
Deutsche PostgreSQL User Group: http://pgug.de

Re: kommende 10 Geburtstage anzeigen

am 30.01.2008 21:02:07 von Sebastian Suchanek

Andreas Kretschmer schrieb:

> [...]
> IMHO ist eine Aussage, wer in den nächsten N Tagen Geburtstag hat,
> sinnvoller. Dazu berechnet man sich einfach das Alter der Leute heute
> und das Alter der Leute heute + N Tage und vergleicht.
> [...]

Hat sich eigentlich schon mal jemand Gedanken über ein halbwegs robustes
Alters-Berechnungs-Verfahren in MySQL gemacht? AGE() gibt's ja hier
leider nicht...


Tschüs,

Sebastian

Re: kommende 10 Geburtstage anzeigen

am 31.01.2008 09:13:01 von Jonas Werres

> Für einen Hinweis wäre ich sehr dankbar

Ich fürchte, meine Lösung ist nicht die Eleganteste, aber bevor du sonst
gar keine Antworten bekommst:
Ich frage nie nächsten 10 in diesem Jahr ab (ORDER BY MONTH(...),
DAY(...) LIMIT) und zusätzlich die ersten 10 des kommenden Jahres. Das
ganze verbinde ich per Union und limitiere wieder auf 10.
Das zweite SELECT ist fast statisch, das dürfte wegen Caching nicht so
schmerzhaft sein, selbst wenn es meist völlig unnütz ist. Und sonst...
naja, es werden max. 10 Datensätze nachher wieder weggeworfen. Meistens
dürfte das zu überleben sein.
Einzige Situation in der das Probleme macht ist bei weniger als 10
Usern. Dann treten möglicherweise einige doppelt auf und/oder es sind
weniger als 10 Ergebnisse (wobei eins von beiden ja eh notwendig ist).

Re: kommende 10 Geburtstage anzeigen

am 31.01.2008 14:35:47 von Daniel Fischer

Sebastian Suchanek!

> Hat sich eigentlich schon mal jemand Gedanken über ein halbwegs robustes
> Alters-Berechnungs-Verfahren in MySQL gemacht? AGE() gibt's ja hier
> leider nicht...

Wie wär's damit?

SELECT YEAR(today) - YEAR(birthday) - (DATEDIFF(today,
DATE_FORMAT(birthday, CONCAT(YEAR(today), '-%m-%d'))) < 0);


Gruß
Daniel