Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von August

SELFHTML Forumsarchiv
Funktionen zum Geburtsdatum

Informationsseite
  1. Seite (DATENBANK) Funktionen zum Geburtsdatum von Ben, 30. 08. 2005, 22:30
nach unten

Funktionen zum Geburtsdatum

Die folgende Nachricht zum Thema stammt von: Ben, 30. 08. 2005, 22:30

Hallo zusammen!

Für meine Webpräsenz muss ich Geburtstage in einer Datenbank speichern.

Spontan fallen mir sowohl die Möglichkeiten ein, mit Hilfe des Datentyps DATE Tag, Monat und Jahr abzuspeichern als auch die Geburtstage als Timestamp abzulegen und über PHP in ein lesbares Datum umzuwandeln.

Es sollen folgende drei Funktionen zur Verfügung stehen:
- Feststellung, wie alt die Person jetzt ist
- Anzeige aller Geburtstage in einem bestimmten Monat
- Ausgabe der nächsten 5 Geburtstagskinder

Nach dem Durchsuchen des Forumsarchives half mir folgender Link weiter, löste jedoch noch nicht mein Problem die nächsten Geburtstage anzuzeigen: http://dev.mysql.com/doc/mysql/de/date-calculations.html .

Was könnt Ihr mir empfehlen?


Besten Dank im Voraus,
Holger

nach obennach unten

Funktionen zum Geburtsdatum

Die folgende Nachricht zum Thema stammt von: wahsaga, 30. 08. 2005, 22:50

hi,

»» Für meine Webpräsenz muss ich Geburtstage in einer Datenbank speichern.
»»
»» Spontan fallen mir sowohl die Möglichkeiten ein, mit Hilfe des Datentyps DATE Tag, Monat und Jahr abzuspeichern als auch die Geburtstage als Timestamp abzulegen und über PHP in ein lesbares Datum umzuwandeln.

nimm date. das macht dir das sortieren/auswählen in queries leichter.

»» Es sollen folgende drei Funktionen zur Verfügung stehen:
»» - Feststellung, wie alt die Person jetzt ist

(TO_DAYS(NOW()) - TO_DAYS(geburtstag)) / 365
bringt das schon in etwa.
soll es genauer sein (schaltjahre mit einbeziehen), musst du etwas mehr berechnungen anstellen.
http://forum.de.selfhtml.org/archiv/2005/3/t102855/#m633082

»» - Anzeige aller Geburtstage in einem bestimmten Monat

MONTH() in WHERE-klausel

»» - Ausgabe der nächsten 5 Geburtstagskinder

da ist etwas mehr überlegung von nöten - besonderes problem ist das über das jahresende "hinausschauen".

man könnte DAYOFYEAR() benutzen - und bei den geburtstagen, deren monat/tag vor dem aktuellen datum liegt, 365 draufaddieren - und dann danach sortierenm, plus LIMIT.
ist aber nur ein denkansatz, noch nicht vollständig.


gruß,
wahsaga


--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }

nach obennach unten

Funktionen zum Geburtsdatum

Die folgende Nachricht zum Thema stammt von: Norbert, 30. 08. 2005, 23:32

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

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von August

© 1998-2006 Seite Impressum, Software: Classic Forum