SQL Summe von der aktuellen Woche bekommen?
Hey, ich versuche aus SQL die Summe einer Spalte im Zeitraum von einer Woche zu bekommen (Also vom 01-01-2022 - 07-01-2022). Dabei habe ich folgenden Code versucht, der jedoch nicht das gewünschte Ergebnis erbringt (leider kommt gar nichts dabei raus)
Habt ihr eine Ahnung wo der Fehler liegt und wie man mein Vorhaben richtig umsetzen kann?
"SELECT SUM(" + dbHelper.NOTES + ") FROM " + dbHelper.TABLE_NAME + " WHERE " + dbHelper.DATE + " BETWEEN 01-01-2022 AND 07-01-2022";
In meiner SQL-Datenbank wurde das Datum TEXT abgespeichert, ist das richtig? Oder sollte ein Datum in der Datenbank normalerweise einen anderen Datentypen haben?
LG
2 Antworten
"gar nichts" kommt dabei sicher nicht raus,
Da sollte mindestens eine Fehlermeldung raus kommen, die Du aber ignorierst.
Das Problem ist nämlich, dass er dein Datum nicht versteht, das muss ein String im richtigen Format sein oder Du parst manuell.
Allerdings solltest Du das gar nicht selber tun. Du solltest niemals die Werte direkt in das SQL schreiben, für sowas gibt es Parameter und die kümmern sich dann auch darum, dass die DB alles verstehen kann. Dabei kannst Du dann auch den Zeitraum als Parameter mit geben und hast direkt die Möglichkeit, das dynamisch machen zu lassen.
Für Java gibt's garantiert ein ORM oder andere DB-Frameworks, die Parameter können. Spontan fällt mir "Hibernate" ein, ich kenne aber nur den .NET-Port davon.
SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values
- dbHelper.Notes scheint die zu summierende Spalte zu sein
- dbHelper.TABLE_NAME scheint die betreffende Tabelle zu sein
- Fehlt bei dbHelper in der dritten Verwendung nicht .DATUM oder ähnliches?
Du hast recht. In meinem Code steht auch dbHelper.DATE. Keine Ahnung wieso das hier nicht steht. Aber ich korrigiere es. Der Output stimmt jedoch immer noch nicht. es wird einfach 0 ausgegeben.
Ich würde ein anderes Datumsformat probieren. Entweder 2022-01-01 oder 01.01.2022. Außerdem wird meistens ein Datum in einfache Anführungszeichen gesetzt.
Okay, ich werde mal weiter schauen vielleicht finde ich dazu passenden code. Ist es denn richtig, dass mein DATUM als TEXT in der SQL Datenbank gespeichert wird? Oder sollte es eher einen anderen Datentypen annehmen?