Geburtage selecten

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Geburtage selecten

    Hi,

    ich bekomms irgendwie nicht gebacken.

    Ich habe eine User-Tabelle in denen in einem DATE-Feld die Geburtsdaten stehen. Nun möchte ich alle Geburtstage der nächsten 60 Tage selecten.

    DATE_ADD(now(), INTERVAL 60 DAY) hilft mir leider nicht weiter, da die Daten ja Jahre in der Vergangenheit haben. Ich hab mir dann gedacht, ersetze ich doch einfach das Jahr mit dem aktuellen. Leider hilft mir das auch nicht weil ich dann im Dezember ein Problem bekomme. Der Januar ist ja schon wieder im nächsten Jahr.

    Hat jemand nen Ansatz für mich? Häng gedanklich irgendwie in der Ecke und komm nicht raus.

  • #2
    Hilft dir DAS weiter?
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Vielleicht ne Notlösung:

      WHERE REPLACE (geburtstag,LEFT(geburtstag,4),YEAR(NOW()))
      BETWEEN NOW() AND NOW() + INTERVAL 60 DAY

      EDIT:
      das Replace müssteste noch mitner IF () wegen Januar ergänzen


      WHERE
      REPLACE (geburtstag,LEFT(g,4),IF(REPLACE (geburtstag,LEFT(geburtstag,4),YEAR(NOW()))<NOW(),YEAR(NOW())+1,YEAR(NOW())))
      BETWEEN NOW() AND NOW() + INTERVAL 60 DAY
      Zuletzt geändert von MelloPie; 03.05.2006, 07:34.
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        @hhcm - leider sagt das manual nicht wie ich das nach tagen selecten kann. Mit der Montatselecterei hat man ja dann auch noch das Problem, das am 30.4 die Geburtstag vom 2.5. nicht mit drin sind.

        Hab jetzt die Konstruktion von melowpie genommen - funktioniert erstaunslich gut.

        Code:
        SELECT u.*, u.birthday FROM s_user u
        
        WHERE
        REPLACE ( u.birthday,LEFT(u.birthday,4), 
        IF(REPLACE (u.birthday,LEFT(u.birthday,4),
        YEAR(NOW()))<NOW(),YEAR(NOW())+1,
        YEAR(NOW()))) BETWEEN NOW() 
        AND NOW() + INTERVAL 60 DAY
        
        ORDER BY month(u.birthday), DAY(u.birthday)

        Kommentar


        • #5
          *doh* - doppelpost

          Kommentar

          Lädt...
          X