monate selektieren

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

  • monate selektieren

    Hallo zusammen,

    ich habe folgende frage:

    Ich möchte mir aus einer Tabelle events nach Datum auslesen lassen.
    Leider komme ich im moment nicht weiter.

    Ich brauche eine Vorschau der nächsten 3 Monate, eine Rückschau bzw. Archiv der letzten 12 Monate sowie den aktuellen Monat.

    In der mysql Doku steht das man es hiermit realisieren kann:

    DATE_ADD(datum,INTERVAL ausdruck typ)
    Nach dem ich das in meiner SQL abfrage eingebaut habe bekomme ich jetzt ALLE Daten die in der DB stehen anstatt die für die nächsten 3 monate. Was mach ich falsch?

    PHP-Code:
    $currentday date("d"time());
    $currentmonth date("m"time());
    $currentyear date("Y"time());

    $t1 $currentyear.$currentmonth.$currentday

    $sql "SELECT datum FROM date
               WHERE DATE_ADD(
    $t1, INTERVAL 3 MONTH) ORDER BY datum DESC"

    $result mysql_query($sql) OR die(mysql_error());

    while(
    $row mysql_fetch_assoc($result)) {

    usw

  • #2
    Re: monate selektieren

    Original geschrieben von wizzardxx
    Was mach ich falsch?
    die Bedingung nicht richtig in SQL umgesetzt. Schau dir die Where-Klausel an. Womit vergleichst du? date_add liefert einen Datumswert zurück, wird aber nicht weiter verwendet.

    Tipp: du mußt datum mit dem Ergebnis von date_add vergleichen.

    Kommentar


    • #3
      OK noch mal

      PHP-Code:
      $sql "SELECT datum FROM date
                 WHERE DATE_ADD(CURDATE(), INTERVAL 3 MONTH) ORDER BY datum DESC"

      Mit CURDATE erhalte ich doch das heutige Datum.
      Somit habe ich doch ein Datum mit dem ich vergleichen kann oder?

      aktuelles Datum + 3 Monate.

      Kommentar


      • #4
        Vergleichen geht mit < > = != usw.

        ungefähr so:
        PHP-Code:
        $sql "SELECT datum FROM date
                   WHERE datum > DATE_ADD(CURDATE(), INTERVAL 3 MONTH) ORDER BY datum DESC"

        wobei das höchstwahrscheinlich nicht die Lösung ist, aber denken darfst du noch selber
        hopka.net!

        Kommentar


        • #5
          OK, das Vergleichen geht mit < > = != usw.
          hätte ich auch selber drauf kommen müssen.

          Aber egal was ich als Vergleich eingebe ich bekomme alles nur nicht das was ich will.

          Wenn ich die SQL Anweisung direkt in phpmyadmin eingebe dann
          zeigt er mir die 3 monate weiter an:


          SELECT
          CURDATE(),
          NOW(),
          CURDATE() + INTERVAL 3 MONTH
          FROM date;

          Ich bin jetzt erstmal schrittweise vorgegangen.

          Mit:
          Code:
          $sql = "SELECT datum FROM date
                     WHERE datum > CURDATE() ORDER BY datum DESC";
          bekomme ich schon mal alles angezeigt was nach heute eingetragen ist.
          Soweit so gut. Doch jetzt stehe ich schon wieder auf dem Schlauch

          Jetzt brauche ich ja eigentlich nur noch die einschränkung auf nächsten 3 monate.

          Code:
          $sql = "SELECT datum FROM date
                     WHERE datum > CURDATE(), DATE_ADD(datum, INTERVAL 3 MONTH) ORDER BY datum DESC";
          Doch dann erhalte ich leider ein SQL error

          Zuletzt geändert von wizzardxx; 04.12.2004, 13:45.

          Kommentar


          • #6
            Original geschrieben von wizzardxx
            Code:
            $sql = "SELECT datum FROM date
                       WHERE datum > CURDATE(), DATE_ADD(datum, INTERVAL 3 MONTH) ORDER BY datum DESC";
            Doch dann erhalte ich leider ein SQL error
            natürlich, weil das ja auch keine gültige bedingung ist.
            Code:
            WHERE datum > x AND datum < y
            sähe wohl schon besser aus.

            allerdings willst du die drei monate, wenn du es dir genau überlegst, vermutlich auch auf CURDATE() daraufaddieren, und nicht auf datum.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              ...vermutlich auch auf CURDATE() daraufaddieren, und nicht auf datum.

              JA genau ich DEPP. Immer diese Konzentrations Fehler
              Jetzt funktioniert es.

              PHP-Code:
              $sql "SELECT datum FROM date
                         WHERE datum > CURDATE() AND datum < DATE_ADD(CURDATE(), INTERVAL 3 MONTH) ORDER BY datum DESC"

              Vielen Dank für die Hilfe.

              Kommentar


              • #8
                Original geschrieben von wizzardxx

                JA genau ich DEPP. Immer diese Konzentrations Fehler
                würde ich nicht sagen, sondern eher Unwissen, was du nicht gern zugibst, weil solche logische Verknüpfungen absolute Grundlagen sind, was jeder kann, der sich halbwegs mit Grundlagen beschäftigt hat

                Kommentar


                • #9
                  Na ja da kann ich dir jetzt so nicht zustimmen.

                  Ich hatte ja ein paar posts vorher schon mit (CURDATE()...bzw $t1
                  welches ich ja auch als aktuelles Datum definiert habe
                  Fragen gestellt.
                  Wieso sollte ich da jetzt absichtlich $datum hinschreiben.

                  Wenn ich unwissen nicht zu geben würde, dann würde ich in einem Forum wie diesem erst gar nicht nach Hilfe fragen. Logisch oder?
                  Mit der Frage nach Hilfe gebe ich doch mein unwissen schon zu.

                  Kommentar

                  Lädt...
                  X