Norbert: Funktionen zum Geburtsdatum

Beitrag lesen

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