Problem beim Vergleich mit curdate und interval

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

  • Problem beim Vergleich mit curdate und interval

    Ich moechte nachgucken wieviele Bestellungen ein Kunde in den letzten 3 Monaten getaetigt hat.

    Das Datum der Bestellungen ist im Format YYYYMMDD abgelegt.

    Ein Vergleich waere dann logischerweise sowas:

    PHP-Code:
    SELECT count(ordersFROM ORDERS
    WHERE kundenid
    =12345
    AND kaufdatum>=DATE_SUB(CURDATE(),INTERVAL 3 MONTH)+
    Ich hab jetzt leider festgestellt dass beispielsweise

    DATE_SUB(CURDATE(),INTERVAL 3 MONTH)+0

    20030109000000 zurueckgibt (also zusaetzliche nullen fuer die uhrzeit), daher klappt der Vergleich nicht, ich brauch den Rueckgabewert nur mit den datumsrelevanten feldern.

    Wie benutze ich curdate zusammen mit interval, damit die 6 Nullen nicht zurueckgeliefert werden? Wenn ich '+0' im Query weglasse wird nur das Datum zurueckgeliefert aber im falschen Format (XXXX-XX-XX).

    Rocco
    Zuletzt geändert von Rocco; 09.01.2004, 12:55.

  • #2
    ersetze mal curdate() durch now()
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      PHP-Code:
      SELECT DATE_SUBNOW( ) , 
      INTERVAL 12 
      MONTH 
      ) + 

      20030109210515 


      Rocco

      Kommentar


      • #4
        Code:
        SELECT
            LEFT(DATE_SUB( NOW(), INTERVAL 12 MONTH ) + 0, 8)
        
        ## -> 200301097
        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 |


        Kommentar


        • #5
          ??? was genau willst du jetzt? ich denke du willst die anzahl der bestellungen??? wenn ja, dann :
          Code:
          SELECT count(orders) as alle 
           FROM ORDERS
          WHERE kundenid=12345
          AND kaufdatum>=DATE_SUB(NOW(), INTERVAL 3 MONTH)
          h.a.n.d.
          Schmalle

          http://impressed.by
          http://blog.schmalenberger.it



          Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
          ... nur ohne :-)

          Kommentar


          • #6
            @Abraxax

            Brilliant! Danke!

            @schmalle

            Das Problem ist doch, dass das gespeicherte Datum keine abschliessenden 6 Nullen hat, die dein (und mein) Vorschlag aber zusaetzlich zurueckgeben nach der Berechnung.

            Wenn ein Kaufdatum 20031201 ist und ich suche mit deiner Methode die letzten 3 Monate ab vergleicht er alle Kaufdaten die groesser als 20030909000000 sind, und die gibt es nicht.

            Abraxaxs Vorschlag funktioniert wunderbar, weil die Nullen weggeschnitten werden.

            Rocco

            Kommentar

            Lädt...
            X