[MySQL_3.23.16,Linux]

Hallo,

ich moechte, um eine Geburtstags Vorwarnfunktion zu schaffen, die Differenz des Monat/Tag Anteils zweier date types ermitteln. Das scheint mir auch auf den zweiten Blick nur sehr umsteandlich und auf keinen Fall in einem einzigen statement zu schaffen. Ist das (leider) richtig oder hat sich vielleicht schon mal jemand damit erfolgreich beschaeftigt?

Hallo Christian,

Die Differenz zwischen 2 Datums-Werten kannst Du in MYSQL mit der Funktion

TO_DAYS(date)

berechnen.
Bsp:

SELECT … WHERE
TO_DAYS(datum1)-TO_DAYS(datum2)

SELECT … WHERE
TO_DAYS(datum1)-TO_DAYS(datum2)

O.k. - mit

SELECT … WHERE
TO_DAYS(datum1)-TO_DAYS(datum2)=14

bekommst Du alle Geb. in genau 14 Tagen - meintest Du das oder steh ich auf der Leitung ?
Das Ganze kann dann in die crontab (sofern UNIX-Server) und via Email zugemailt werden o.ae.

Ciao,
Alex.

SELECT … WHERE
TO_DAYS(datum1)-TO_DAYS(datum2)=14

bekommst Du alle Geb. in genau 14 Tagen -
meintest Du das oder steh ich auf der
Leitung ?

Falls datum2 der Geburtsdatumseintrag in der DB ist und datum1 das aktuelle Datum (now()), dann kommt da leider nur ein einziges Mal 14 raus, und zwar in dem Jahr der Geburt, und nicht etwa jedes Jahr aufs Neue! Problematik erkannt?

Gruesse, Christian

Hi,

SELECT … WHERE
TO_DAYS(datum1)-TO_DAYS(datum2)=14

Vielleicht geht das hiermit?

SELECT ... WHERE
 mod(TO\_DAYS(datum1), 365) - mod(TO\_DAYS(now()), 365) = 14

Kann ich aber nicht ausprobieren, da ich kein MySQL habe…

Gruß

J.

Vielleicht geht das hiermit?

SELECT … WHERE
mod(TO_DAYS(datum1), 365) -
mod(TO_DAYS(now()), 365) = 14

Gute Idee eigentlich, nur mit den Schaltjahren gibts Probleme.

Gruss, Christian

Vielleicht geht das hiermit?

SELECT … WHERE
mod(TO_DAYS(datum1), 365) -
mod(TO_DAYS(now()), 365) = 14

Gute Idee eigentlich, nur mit den
Schaltjahren gibts Probleme.

Dann hilft wohl nur DayofYear (habe ich eben im Handbuch entdeckt).

SELECT ... WHERE DayofYear(datum1) - DayofYear(now()) = 14

Gruß

J.

Dann hilft wohl nur DayofYear (habe ich
eben im Handbuch entdeckt).

SELECT … WHERE DayofYear(datum1) -
DayofYear(now()) = 14

Das Schaltjahrproblem bleibt. Es sollte etwas geben wie DayMonthDiff. Naja, man kommt wohl nicht umhin sich um die Schaltjahre selber zu kuemmern.

Christian

Das Schaltjahrproblem bleibt.

Wieso das? Laut Handbuch ergibt DayofYear einen Wert zwischen 1 und 366, d.h. sie berücksichtigt die Schaltjahre.
OK, wenn der Betreffende an einem Schaltjahr geboren wurde, und das aktuelle Jahr ist keins, dann hast Du einen Tag Differenz. Der umgekehrte Fall ist auch möglich.
Für eine Erinnerungsfunktion sollte das aber nicht das Problem sein. Ist der Aufwand nicht höher als der Nutzen?

Gruß

J.

Für eine Erinnerungsfunktion sollte das
aber nicht das Problem sein. Ist der
Aufwand nicht höher als der Nutzen?

Da hast du wohl Recht. Generell ist das aber doch ein Missstand!

Christian

Hallo Christian,

ich moechte, um eine Geburtstags
Vorwarnfunktion zu schaffen, die
Differenz des Monat/Tag Anteils zweier
date types ermitteln

ich weiss ja nicht ob sich dein prob schon befriedigend geloest hat (scheinbar laut postings nicht so ganz)…
unter www.fullaccess.de gibt es unter trips&tricks unter dem stichwort abfragen eine beispiel datenbank mit genau diesem geburtstags-feature zum downloaden. vielleicht kannst du das ja 1:1 kopieren und anpassen oder es hilft dir zumindest weiter?!

gruss
Andreas