phpbar.de logo

Mailinglisten-Archive

datumsermittlung

datumsermittlung

Norbert Pfeiffer norbert at itbw.de
Mon Jul 21 18:58:59 CEST 2003


Hallo Jan,

die Geburtstage um ein gegebenes Datum zu ermitteln ist
nicht trivial, das Query dazu ist knapp 1000 Byte gross.

Das Feld 'geb' ist allerdings vom Typ Date, da von den
meisten Leuten die Uhrzeit der Geburt nicht bekannt ist.

Du kannst jetzt Dein Feld mit ALTER TABLE anpassen,
oder das Query umschreiben ... viel Spass ... ;-)


m. b. G. Norbert
_____________________
normal:  02292-681769
Notruf:  0177-2363368
---------------------

Anhang:

# ------------- nur fuer den aktuellen Tag:
SELECT
vnam,
geb,
YEAR(NOW()) - YEAR(geb) AS Jahre
FROM
persons
WHERE
MONTH(geb) = MONTH(NOW()) AND
DAYOFMONTH(geb) = DAYOFMONTH(NOW())
ORDER BY
Jahre, vnam;

# ------------- fuer die naechsten X Tage:
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 (33) DAY)
ORDER BY
akut, vnam;

# ------------- e.o.m.

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive