Geburtstag + 7 Tage

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Geburtstag + 7 Tage

    Hallo,

    habe da ein kleines Problem mit dem gespeicherten Datum,

    ich habe in der DB geburtsdaten im Forma YYYY-MM-DD gespeichert,
    nun will ich abfragen wer in den nächsten 7 Tagen geburtstag hat,
    ich habe zwei Ansätze ausprobiert, die bedingt funktionieren.
    D.h. Vom 1ten Tag im Monat bis zum siebtletzten Tag im Monat, sobald aber ein Monatswechsel in die Abfrage kommt, klappt es nicht mehr.

    folgende Abfragen habe ich probiert.
    als PHP- Abfrage mit mysql_query
    PHP Code:
    SELECT kidvornamenachname,ortgeburtsdatum FROM kunden WHERE 
    date_format
    ( `geburtsdatum` , '%d' ) >= ".date('d',strtotime('now'))." AND 
    date_format( `geburtsdatum` , '%m' ) >= ".date('m',strtotime('now'))."  AND 
    date_format( `geburtsdatum` , '%d' ) <= ".date('d',strtotime('now+7days'))." AND 
    date_format( `geburtsdatum` , '%m' ) <= ".date('m',strtotime('now+7days'))." 
    ORDER by DATE_FORMAT(`geburtsdatum`,'%d'
    und


    PHP Code:
    SELECT kidvornamenachname,ortgeburtsdatum FROM kunden 
    WHERE
    MONTH
    geburtsdatum ) >= MONTHCURDATE() )
    AND 
    MONTHgeburtsdatum ) <= MONTHDATE_ADDCURDATE(), INTERVAL 7 DAY ) )
    AND 
    DAYOFMONTHgeburtsdatum ) >= DAYOFMONTHCURDATE() )
    AND 
    DAYOFMONTHgeburtsdatum ) <= DAYOFMONTHDATE_ADDCURDATE(), INTERVAL 7 DAY ) ) 

    Danke im Vorraus

    speeedy018

  • #2
    Du machst es dir auch viel zu kompliziert ...
    Code:
    SELECT kid, vorname, nachname,ort, geburtsdatum FROM kunden
    WHERE geburtsdatum >= NOW () AND geburtsdatum <= DATE_ADD( CURDATE(), INTERVAL 7 DAY )
    oder
    PHP Code:
    'SELECT kid, vorname, nachname,ort, geburtsdatum FROM kunden
     WHERE geburtsdatum >= NOW () AND geburtsdatum <= ' 
    date 'Y-m-d'strtotime '+7days' ) ); 
    Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

    Comment


    • #3
      Da ich ja noch Jahreszahlen gespeichert habe, funktioniert das nicht, ich bekomme da nur ein leeres Array zurück.

      Comment


      • #4
        Oder noch einfacher
        PHP Code:
        SELECT 
            kid

            
        vorname
            
        nachname,
            
        ort
            
        geburtsdatum 
        FROM 
            kunden
        WHERE 
            geburtsdatum BETWEEN NOW
        () AND  DATE_ADD(CURDATE(), INTERVAL 7 DAY
        Gruss
        H2O

        Comment


        • #5
          Code:
          SELECT
              kid,
              vorname,
              nachname,
              ort,
              geburtsdatum
          FROM
              kunden
          WHERE
              CONCAT(YEAR(),RIGHT(geburtsdatum,6)) >= NOW() AND
              CONCAT(YEAR(),RIGHT(geburtsdatum,6)) <= DATE_ADD( CURDATE(), INTERVAL 7 DAY )
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Comment


          • #6
            Hallo leute,

            leider gibt mir die abfrage von H2O eine Leeres Resultat zurück und das von Abraxax bringt den Fehler:

            "#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the
            right syntax to use near ') , RIGHT( geburtsdatum , 6 ) ) >= NOW( ) AND CONCAT( YEAR( ) , RIGHT( geburtsd' at line 1 "

            Comment


            • #7
              mach mal diese query

              Code:
              SELECT
                  kid,
                  vorname,
                  nachname,
                  ort,
                  geburtsdatum,
                  CONCAT(YEAR(),RIGHT(geburtsdatum,6)) gebdatum
              FROM
                  kunden
              WHERE
                  gebdatum BETWEEN NOW() AND DATE_ADD( CURDATE(), INTERVAL 7 DAY )
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Comment


              • #8
                Es ist eigentlich klar, dass meine Abfrage, und auch diejenige von tontechniker nicht funktionieren können, da das Jahr, wie Abraxax festgestellt hat, nicht berücksichtigt werden darf. Leider stimmt seine Abfrage formal nicht ganz. Das sollte gehen:
                PHP Code:
                SELECT
                    kid
                ,
                    
                vorname,
                    
                nachname,
                    
                ort,
                    
                DATE_FORMAT(geburtsdatum,"%m-%d"gebdatum
                FROM
                    kunden
                WHERE
                    gebdatum BETWEEN DATE_FORMAT
                (NOW(),"%m-%d") AND DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 7 DAY), "%m-%d"
                Es gibt natürlich auch noch andere Möglichkeiten und ähnliche Fragen gabs schon im Duzend. Mit der Suche findest du verschiedenste Beiträge zum Thema, z.B. den
                Gruss
                H2O

                Comment


                • #9
                  Danke an alle,

                  die in diesem Thread angebotenen Lösungen funktionierten bei mir leider nicht aber der link zum anderen Thread brachte die Lösung !

                  @H2O du wirst es mir nicht glauben, aber ich habe 2 Tage gesucht und zich ansätze gefunden und ausprobiert aber nichts passendes.

                  Trotzdem danke für den Link

                  gruß

                  speeedy018

                  Comment

                  Working...
                  X