Datenbankabfrage mit WHERE und Sum

isaack

Mitglied
Hallo,

ich habe ein problem. <-- sonst würde ich hier ja nicht posten :)
und zwar habe ich in meiner datenbank eine tabelle die heist buchungen. in der ist eine spalte die heist betrag und da steht auch der betrag drin und eine die heist datum und da steht ein timestamp drin.
jetzt habe ich das problem das ich gern die beträge zusammenrechnen möchte und das auch nur von dem heutigen tag.
ich habe schon viel gelesen und bin auch diffdate gestoßen.
jedoch hilft mir das auch nicht wirklich weiter.

vielleicht kann mir einer von euch weiter helfen.
ich komme einfach nicht auf einen grünen zweig.

danke schonmal für die hilfe.

gruß eric
 
Was hast du schon versucht bzw. wie sieht deine Abfrage im Moment aus?

Bin zwar ein bisschen aus der Übung aber das hier sollte zumindest in die richtige Richtung gehen:

SQL:
SELECT datum, SUM(betrag) FROM buchung WHERE datum = DATE_FORMAT(NOW(), "%Y-%m-%d")

Eventuell am Ende noch ein "GROUP BY datum" das kommt aber u.a. auch darauf an ob du wirlich nur das Datum gespeichert hast oder ob auch eine Zeitangebe enthalten ist.
 
Ich würde mal sagen SUM erfordert ein GROUP BY ;)
Und zur Datumsspalte: reden wir hier über den MySQL-Typen "timestamp" oder um einen tatsächlichen unix-timestamp (dann wäre das feld eher int).

Und zu guter letzt: Welche Datenbank benutzt du überaupt?
 
Ist es MySQL?

Nachtrag:
@alxy
Nur, wenn Spalten ohne Aggregationsfunktionen enthalten sind. In tombes Bsp müsste das Datum aus dem SELECT raus.
 
PHP:
$tag = time();
$abzug = 60*60*24;
$gestern = $tag-$abzug;
echo $tag;?><br><?
echo $gestern;
$line = mysql_fetch_array(db_query("SELECT * FROM ".$db_prefix."_buchungen WHERE DATEDIFF('$tag','$gestern') "));
echo $line['datum'];

das war mein versuch. aber so wie ich das hier lese von euch kann es ja nichts werden.
 
Du speicherst das Datum mit time() ab. Also als Zahl. Das ist kein Problem.

Mit FROM_UNIXTIME() kannst du in MySQL ein Timestamp daraus machen. Mit DATE() daraus das Datum ziehen.
DATE(FROM_UNIXTIME(t.datum))

Jetzt brauchen wir noch das datum von heute. Wieder mit DATE
DATE(NOW())

Mit DATE_SUB() Oder ienfach INTERVAL kannst du jetzt eine Anzahl Tage davon abziehen. In deinem Beispiel Einer, damit wir gestern bekommen

SQL:
SELECT SUM(t.betrag)
FROM my_table AS t
WHERE DATE(FROM_UNIXTIME(t.datum)) = DATE(NOW() - INTERVAL 1 DAY)
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück