Hi,
nimm date.
das macht dir das sortieren/auswählen in queries leichter.
gute Idee ...
- Ausgabe der nächsten 5 Geburtstagskinder
so habe ich das nicht parat,
aber die Ausgabe aller Geburtstagskinder fuer die naechsten X Tage, kann ich anbieten:
SET @limes = 11;
SELECT
vnam,
geb,
IF(DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR) < CURDATE(),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb) + 1) YEAR),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR)
) AS akut,
IF(DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR) < CURDATE(),
(YEAR(NOW()) - YEAR(geb) + 1),
(YEAR(NOW()) - YEAR(geb))
) AS Jahre
FROM
persons
WHERE
IF(DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR) < CURDATE(),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb) + 1) YEAR),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR)
) >= CURDATE()
AND
IF(DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR) < CURDATE(),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb) + 1) YEAR),
DATE_ADD(geb, INTERVAL (YEAR(NOW()) - YEAR(geb)) YEAR)
) <= DATE_ADD(CURDATE(), INTERVAL (@limes) DAY)
ORDER BY
akut, vnam
;
Die Variable @limes enthaelt die Anzahl der Tage, fuer die man abfragt.
Das aktuelle Alter steckt da auch schon mit drin.
Und wenn Dir die WHERE-Klausel nicht gefaellt, verwende HAVING.
Dann kann man sich auf "akut" und "Jahre" von SELECT beziehen.
Gruss Norbert