rickard: Vielfachen Abstand zu einem Datum

Hallo Leute,

ich möchte mit MySQL eine Abfrage erstellen, die basierend auf einer Differenz zu einem Datum in der DB die richtigen User ausgibt.

Beispiel:
Selektiere alle User, deren Differenz zum DB-Feld [Datum] ein Vielfaches von 1 Jahr ist. (Anwendung: "Geburtstagsgruß jedes Jahr")
Selektiere alle User, deren Differenz zum DB-Feld [Datum] ein Vielfaches von 14 Tagen ist. (Anwendung: "Erinnerungsmail alle 14 Tage")
Selektiere alle User, deren Differenz zum DB-Feld [Datum] ein Vielfaches von 3 Monaten ist. (Anwendung "Benachrichtigung zum Quartalsende")

Ich suche nach einer allgemeinen Form, wie ich das lösen kann und nicht so wie hier nur bezogen auf Monate wie hier http://forum.de.selfhtml.org/archiv/2008/7/t174747/. Das heißt, es soll für folgende MySQL-Zeiteinheiten möglich sein (Minute, Stunde, Tag, Woche, Monat, Jahr).

Über Ideen zur Lösung des Problems würde ich mich sehr freuen.

Danke und beste Grüße

  1. Also was ich brauche, ist so etwas wie MySQL DATE_ADD (vgl. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_adddate) nur mit variabler Zahl N, wobei N, 2N, 3N, 4N, usw. funktionieren muss:

    SELECT DATE_ADD(mydate, INTERVAL N DAY);

    Gibt's sowas?

    1. Hallo,

      mit variabler Zahl N, wobei N, 2N, 3N, 4N, usw. funktionieren muss:
      SELECT DATE_ADD(mydate, INTERVAL N DAY);
      Gibt's sowas?

      Ja, in der Sprache deiner Wahl, mit der du das Statement zusammenbaust und statt N den entsprechenden Wert einsetzt.

      vg ichbinich

      --
      Kleiner Tipp:
      Tofu schmeckt am besten, wenn man es kurz vor dem Servieren durch ein saftiges Steak ersetzt...
      1. Hmm, das ist natürlich nicht das, was ich will. Kann ja nicht X Abfragen machen...
        Brauche irgendwas mit mod und interval geschachtelt...

        Hallo,

        mit variabler Zahl N, wobei N, 2N, 3N, 4N, usw. funktionieren muss:
        SELECT DATE_ADD(mydate, INTERVAL N DAY);
        Gibt's sowas?
        Ja, in der Sprache deiner Wahl, mit der du das Statement zusammenbaust und statt N den entsprechenden Wert einsetzt.

        vg ichbinich

    2. Hi,

      SELECT DATE_ADD(mydate, INTERVAL N DAY);

      Gibt's sowas?

      Nein, nicht direkt bzw. build-in.

      Ggf. ist sowas mit einer stored procedure umsetzbar, die in einer Schleife x Werte durchprobiert.

      MfG ChrisB

      --
      RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  2. Hi, zum Thema Event Scheduling und Erinnerungen gibt es hier ein recht gutes Whitepaper. Gestalte die Tabelle in mySQL so, dass du die notwendigen Daten ueber das Recurrence Pattern darin ablegen kannst und bau dir mit PHP ein API um diese Werte entsprechend zu interpretieren. Das verlagert die rechenintensive Arbeit von Datenbankabfragen nach PHP hinein. Am Ende bleibt es ja eh bei Datumsfunktionen. :-)
    Cheers, Frank