Datum vergleichen

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

  • Datum vergleichen

    Moin, Moin,
    stehe mal wieder ein wenig auf der Leitung.

    Ich sitze grad an einem Eventkalender. Die Select-Abfragen für 'Datum heute' und für 'Datum heute + 7 Tage' habe ich hinbekommen. Jetzt soll es aber noch eine Abfrage 'Datum von bis' geben. Ich habe in meiner MySQL Tabelle 2 Spalten, ev_start_date und ev_end_date.

    Ich habe folgende Where Klausel ausprobiert:

    PHP-Code:
    WHERE ev_start_date <= '2007-10-03' AND ev_end_date >= '2007-10-07' 
    Klar, dabei werden nur Daten berücksichtigt, deren Start Datum kleiner oder gleich 2007-10-03 sind und deren End Datum größer oder gleich 2007-10-07 sind. Der BETWEEN Operator brachte mich auch nicht weiter.

    Hat einer ne Idee? Ich sehe im Moment den Wald vor lauter Bäumen nicht.

    DANKE

    Gruß Mario

  • #2
    Wie genau stehen denn die Werte in deine Spalten? Verwende doch die mysql-Datums Funktionen
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Sorry, bin heute etwas neben der Spur. Erst LESEN, dann antworten.

      Ich versuche schon die ganze Zeit die MySQL DAtums Funktionen zu benutzen, komme da aber irgendwie nicht weiter.

      Gruß Mario
      Zuletzt geändert von McFly_Kiel; 01.10.2007, 11:09.

      Kommentar


      • #4
        Wie genau stehen denn die Werte in deine Spalten?
        Als Date, Datetime oder Timestamp??
        Ich versuche schon die ganze Zeit die MySQL DAtums Funktionen zu benutzen, komme da aber irgendwie nicht weiter.
        Wie wär's für den Anfang wenn du beschreiben würdest was du bereits probiert hast und was dabei rausgekommen ist (ev Fehlermeldungen würde auch helfen)?

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Sie stehen im Date-Format in der Tabelle (2007-10-02)

          Um z.B. alle Termine für 'Datum heute' aufzulisten, verwende ich folgenden Select-String:
          PHP-Code:
          select *, 
          date_format(ev_start_date,'%d.%m.%Y') as datum1date_format(ev_end_date,'%d.%m.%Y') as datum2 
          FROM events
          INNER JOIN categories ON categories
          .id events.ev_cat
          WHERE ev_start_date 
          <= '$today' AND ev_end_date >= '$today' 
          ORDER BY ev_start_date ASC
          $today ist eine Variable, mit dem aktuellen Datum (Format Y-m-d) als Inhalt.

          Um alle Termine für den Zeitraum 'Datum heute + 7 Tage' aufzulisten, verwende ich diesen Select-String:
          PHP-Code:
          select *, 
          date_format(ev_start_date,'%d.%m.%Y') as datum1date_format(ev_end_date,'%d.%m.%Y') as datum2 
          FROM events
          INNER JOIN categories ON categories
          .id events.ev_cat
          WHERE ev_start_date BETWEEN 
          (ev_start_date <= '$today') AND DATE_ADD('$today'INTERVAL 7 DAY
          AND 
          ev_end_date >= '$today' 
          ORDER BY ev_start_date ASC
          Beide Abfragen funktionieren. Jetzt zu meinem Problem:
          Ich würde ganz gern eine 'Datum von bis' Abfrage realisieren. Die Where Klausel aus meiner vorhergehenden Antwort bringt mich nicht zum Ziel. Auch eine BETWEEN-Bedingung wie im 2ten Select-String führt mich nicht weiter. Mir gelingt es einfach nicht alle Fälle zu berücksichtigen. Das Start Datum müsste in der Abfrage wie folgt berücksichtigt werden: <=Datum von bis. Das End-Datum müsste so aussehen >= Datum von bis.

          Egal was ich ausprobiere, ich bekomme entweder falsche Daten angezeigt, oder die Fehlermeldung: Tabelle nicht vorhanden oder falscher Name!

          Hoffe ihr könnt damit was anfangen und mir einen Wink mit dem Gartenzaun geben.

          Gruß Mario
          Zuletzt geändert von McFly_Kiel; 02.10.2007, 05:33.

          Kommentar


          • #6
            Was du genau willst, verstehe ich immer noch nicht. Aber noch weniger, was deine zweite Abfrage
            Code:
            WHERE ev_start_date BETWEEN (ev_start_date <= '$today') AND DATE_ADD('$today', INTERVAL 7 DAY) 
            AND ev_end_date >= '$today'
            soll. (ev_start_date <= '$today') ergibt 0 oder 1, und das verleichst du mit dem End-Datum, das dürfte dann immer wahr sein. Versuchs mal so
            Code:
            WHERE DATE(ev_start_date) BETWEEN CURRDATE() AND DATE_ADD(CURRDATE(), INTERVAL 7 DAY)
            Das entspricht dann genau deiner ersten Abfrage. Falls ev_start_date vom Type DATE ist, kannst du die DATE()-Funktion weglassen.
            Und versuche vielleicht an einem Beispiel zu erklären, was du noch haben willst.
            Gruss
            H2O

            Kommentar

            Lädt...
            X