Hoi mensen,

ik wil op mijn website een kleine remimber maken van verjaardagen.. in een klein boxje rechtsbovenin de pagina moeten bijv 6 mensen komen te staan die binnenkort jarig zijn. Kan iemand mij vertellen hoe ik de data zo kan sorteren dat hij weet welke datum het is en dus aankomende 5 verjaardagen laat zien?

Ik hoop dat ik een beetje duidelijk ben....

groetjes!
Marije
:) ik ben benieuwd
@ Frank: die klopt ook niet, want iemand kan deze maand nog jarig worden.

[edit]
En stel dat het vandaag 31 maart is?
[/edit]

Volgens mij moet hij zo:

SELECT
    name,
    CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d')) AS verjaardag
FROM tabel
WHERE
    CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d')) > CURDATE()
ORDER BY verjaardag ASC
LIMIT 6
Ik was weer lekker wakker iid :) Je kan alleen jarig zijn in de toekomst op je geboortedag :s
Als je dan op schrikkeldag jarig ben, ben je voorlopig echt nog niet jarig :)
Frank schreef op 07.08.2006 21:41
Hó Jan! Stop maar! Er staat al iets dat in de juiste richting gaat.

Aanvulling: stel, ik ben op 3 april geboren, en vandaag is het 31 maart. Dan kun je niet stellen dat de maand groter moet zijn dan mijn geboortemaand EN dat de dag groter moet zijn dan mijn geboortedag. Vandaar mijn iets ingewikkelder oplossing. Maar hij werkt :-) (Lokaal getest)
@Jan: Je hebt volkomen gelijk! Ik had even niet aan die dagen van de maand gedacht... Neem het dagnummer van het jaar en dit probleem is ook weer opgelost! DAYOFYEAR() is je beste vriend.

(wat ben ik toch blij met de handleiding)
@Frank: ja, da's ook een goeie oplossing!
[edit]
Ehh, Marije, snap je het nog?
[/edit]
Ik denk dat dit hem moet worden, deze is ook schrikkeljaar-proof. Personen geboren op 29 februari krijgen dan 1 maart als verjaardag aangewezen.

SELECT
    name,
    CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d')) AS verjaardag
FROM tabel
WHERE
    DAYOFYEAR(CONCAT(YEAR(CURDATE()), DATE_FORMAT(datum, '-%m-%d'))) > DAYOFYEAR(CURDATE())
ORDER BY verjaardag ASC
LIMIT 6
ja sorry ik kon even niet op de website komen (raar) maar ik heb het erin gezet en volgens mij werkt het.
Ik heb direct even getest en klopt het dat hij vanaf volgend jaar niet meer weergeeft dus de geboortedatum 1978-01-01 geeft hij niet weer? Komt dat over een maand ofzo?

in ieder geval al super bedankt Jan!

Marije
@ Frank: toch nog even een kleine opmerking:
29 feb 2004 geeft hetzelfde dagnummer als 1 maart 2005. Is het dan niet beter om gewoon het geboortejaar uit het veld met de geboortedatum te trekken (zoals in mijn eerdere voorbeeld) en daar het huidige jaar voor in te vullen? Dan kan MySQL gewoon twee waarden van het type DATE vergelijken en gaat het altijd goed, lijkt me?

Reageren