Zur Navigation

Formular absenden und Geburtstag auslesen [6]

51 Jörg Kruse

ja, so in etwa; ohne Semikolon - denn damit beendest du eien Abfrage

Du musst dann wohl auch das Datumsformat im CONCAT() Ausdruck oberhalb ändern, wenn du nicht mehr zwischen Monaten sondern zwischen Tagen suchst:

WHERE
CONCAT(
IF(MONTH(geburtsdatum) < MONTH(CURDATE()), YEAR(CURDATE()) + 1, YEAR(CURDATE())),
DATE_FORMAT(geburtsdatum, '-%m-%d')
)

Das Format von CURDATE() ist ja %Y-%m-%d

07.06.2012 20:25

1 Forenmitglied fand diesen Beitrag gut

52 tobi

so scheint es zu klappen ;)

$sql = "
SELECT id, name, vorname, geburtsdatum, (IF(MONTH(geburtsdatum) < MONTH(CURDATE()), YEAR(CURDATE()) + 1, YEAR(CURDATE())) - YEAR(geburtsdatum)) AS `alter`, DAYOFMONTH(geburtsdatum) AS geburtstag, MONTH(geburtsdatum) AS geburtsmonat
FROM geburtstagsliste
WHERE CONCAT(IF(MONTH(geburtsdatum) < MONTH(CURDATE()), YEAR(CURDATE()) + 1, YEAR(CURDATE())), DATE_FORMAT(geburtsdatum, '-%m-%d'))
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 9 DAY)
ORDER BY geburtsmonat, geburtstag";	

und das Ganze nun auch realisiert für bestimmte Alter:
$sql = "
SELECT id, name, vorname, geburtsdatum, (IF(MONTH(geburtsdatum) < MONTH(CURDATE()), YEAR(CURDATE()) + 1, YEAR(CURDATE())) - YEAR(geburtsdatum)) AS `alter`, DAYOFMONTH(geburtsdatum) AS geburtstag, MONTH(geburtsdatum) AS geburtsmonat
FROM geburtstagsliste
WHERE CONCAT(IF(MONTH(geburtsdatum) < MONTH(CURDATE()), YEAR(CURDATE()) + 1, YEAR(CURDATE())), DATE_FORMAT(geburtsdatum, '-%m-%d'))
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 9 DAY)
HAVING `alter` IN('50', '60', '70', '80', '90', '100')
ORDER BY geburtsmonat, geburtstag";	

07.06.2012 20:44 | geändert: 07.06.2012 20:50

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]