Berti: mysql, kleines Problem mit date Format

Hallo!

Ich möchte aus meiner DB alle Einträge eines bestimmten Tages auslesen, bzw. alle Einträge pro Tag (in meinem Fall z.B. die Summe aller Verkäufe eines Tages).

Die Daten werden dem Tag über das date Format zugeordnet, also etwa: "2006-06-25 20:00:58", nun kann ich z.B. folgendes machen:

SELECT create, count(id) FROM sold GROUP BY order DESC

Damit bekomme ich alle Verkäufe nach Tagen sortiert, aber eben nicht zusammengefasst, da natürlich jeder Eintrag an dem Tag eine andere Uhrzeit hat. Ich suche nun einen Weg es so zu machen, dass nur nach dem Datum, nicht der Uhrzeit gruppiert wird, also "2006-06-25", sodass das Ergebnis wie folgt aussieht:

2006-06-25   25
2006-06-24    8
2006-06-23   17
[..]

Kann mir hier jemand weiterhelfen?
Danke Euch
Berti

  1. Ach ja, dem ist hinzuzufügen, dass ich eigentlich ja nach Datum gruppieren will, also:

    SELECT create, count(id) FROM sold GROUP BY create DESC

  2. Moin!

    Die Daten werden dem Tag über das date Format zugeordnet, also etwa: "2006-06-25 20:00:58",

    Das Feldformat heißt DATETIME, nicht DATE - der Unterschied ist wichtig.

    SELECT create, count(id) FROM sold GROUP BY order DESC

    Damit bekomme ich alle Verkäufe nach Tagen sortiert, aber eben nicht zusammengefasst, da natürlich jeder Eintrag an dem Tag eine andere Uhrzeit hat.

    Überlege, wie du aus einem DATETIME-Feld (Datum mit Uhrzeit) mithilfe der Datums- und Zeitfunktionen von MySQL nur das Tagesdatum herausextrahieren kannst.

    Sobald das geschafft ist, hast du eine Spalte zum Gruppieren.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
    1. Hallo Sven,

      danke für den Tipp, aber ich bekomme es nicht hin.

      SELECT create, count(id) FROM sold GROUP BY DATE_FORMAT('create','Ymd') DESC

      War mein Ansatz, läuft aber nicht. So richtig fit bin ich mit SQL leider auch nicht. Kannst Du noch konkreter werden? Das wäre nett von Dir.

      Gruß,
      der Berti

      1. Moin!

        danke für den Tipp, aber ich bekomme es nicht hin.

        SELECT create, count(id) FROM sold GROUP BY DATE_FORMAT('create','Ymd') DESC

        War mein Ansatz, läuft aber nicht. So richtig fit bin ich mit SQL leider auch nicht. Kannst Du noch konkreter werden? Das wäre nett von Dir.

        Du brauchst die Datumsspalte im Ergebnis, also im SELECT.

        Außerdem solltest du das Datum nicht formatieren (das macht einen String daraus, der nach Stringregeln sortiert und gruppiert würde), sondern echt konvertieren. Die Funktion DATE() sollte das eigentlich machen.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Danke!

          Für alle Interessierten:

          SELECT DATE(create) as datum, count(id) FROM sold GROUP BY datum DESC