mysql, kleines Problem mit date Format
Berti
- datenbank
0 Berti0 Sven Rautenberg0 Berti0 Sven Rautenberg0 Berti
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
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
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 BYorder
DESCDamit 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
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
Moin!
danke für den Tipp, aber ich bekomme es nicht hin.
SELECT
create
, count(id) FROM sold GROUP BY DATE_FORMAT('create','Ymd') DESCWar 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
Danke!
Für alle Interessierten:
SELECT DATE(create
) as datum, count(id) FROM sold GROUP BY datum DESC