Laden...

SQLite: Query für Zeitspanne spart gültigen Eintrag aus

Erstellt von GeneVorph vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.556 Views
G
GeneVorph Themenstarter:in
180 Beiträge seit 2015
vor 6 Jahren
SQLite: Query für Zeitspanne spart gültigen Eintrag aus

verwendetes Datenbanksystem: <SQLite>

Hallo,

ich hatte mit Datumswerten noch nicht wirklich viel zu tun und habe folgende Frage zum Thema "Zeitspanne" ermitteln:

Ich habe eine Tabelle DateTime2_Table. Diese besteht aus den Spalten "id" (INTEGER) und "time" (DATETIME -- kann zwar unter SQLite Manager ausgewählt werden, aber mir will scheinen da wird nur ein String übergeben?).

Meine Tabelle enthält 10 Einträge in der Spalte time, nach dem Schema:
yyyy-MM-dd hh:mm:ss

Ein Aufruf wie:

SELECT * FROM DateTime2_Table WHERE time >= '1983-03-04' AND <= '1990-08-08'

liefert problemlos die gesuchten Einträge.

Was ich nicht verstehe:
Wieso liefert

SELECT * FROM DateTime2_Table WHERE time >= '1996-01-01' AND <= '1996-12-31'

keinen Eintrag, obwohl ein Eintrag in der Tabelle wie folgt lautet: 1996-04-06 00:00:00 ?
Tatsächlich scheint die Abfrage sich nur jeweils auf die volle Jahreszahl zu konzentrieren und Monate und Tage außer Acht zu lassen. Auch mit BETWEEN kam ich nicht weiter - das Resultat blieb das Gleiche.

Vielen Dank für eure Hilfe, ich schätze nach all den Stunden suchen stehe ich nur aufm Schlauch...
Gruß

D
985 Beiträge seit 2014
vor 6 Jahren

Wenn ich das Statement ohne syntaktischen Fehler ausführe, kann ich das nicht nachvollziehen

SqlFiddle

G
GeneVorph Themenstarter:in
180 Beiträge seit 2015
vor 6 Jahren

Sir Rufo, also bei wird auch kein Fehler ausgegeben - nur eben nichts angzeigt. Hast du das im SQLite Manager überprüft? Oder irgendwie anders? Hattest du Daten in eine Tabelle eingetragen und wenn ja von welchem Typ (bei mir sind die Werte unter der Column time als DATETIME abgelegt - bei dir string?) Ich bin mir nicht sicher, aber ich denke mal, es dürft ja keinen Unterschied machen, ob ich meiner C# app eine Methode aufrufe, die selbige Query ausführt oder das im Manager teste. Oder liege ich da falsch? Ich habe schon befürchtet, dass das wieder so ein Fehler ist, wo irgendwas ganz anderes schiefgeht, die Frage ist nur was? Ich mache nix anderes, als meinen Query und die Tabelle im SQLit Manager zu testen?

Dennoch vielen Dank, für's ausprobieren! Vielleicht kannst du meine Fragen von oben noch beantworten, möglicherweise hilft mir das weiter.

D
261 Beiträge seit 2015
vor 6 Jahren

Oder irgendwie anders? Hattest du Daten in eine Tabelle eingetragen und wenn ja von welchem Typ (bei mir sind die Werte unter der Column time als DATETIME abgelegt - bei dir string?)

Er hat ein SqlFiddle Link gepostet, dort kannst du dir das Schema und die Daten die er verwendet hat anschauen.

Ich war so frech und hab mir das Schema und die Daten von Sir Rufo geklaut und das ganze noch mit dem SQLite Manager (allerdings das Firefox Addon, nicht Standalone) getestet. Ich konnte keine Probleme feststellen. (Auch mit BETWEEN hatte ich keine Probleme.)

Aber dass deine beiden Queries im Startpost syntaktische Fehler haben, hast du gelesen?

G
GeneVorph Themenstarter:in
180 Beiträge seit 2015
vor 6 Jahren

Aber dass deine beiden Queries im Startpost syntaktische Fehler haben, hast du gelesen?

Oh Mann, das hatte ich total missverstanden! SORRY! Darf ich fragen, wo genau der Fehler liegt? Vielleicht bin ich vollkommen blind, aber ich verstehe nicht, wieso es beim ersten query funktioniert, beim zweiten nicht^^ Alles, was ich jetzt zu verstehen glaube, ist, dass ich beim 2. das Datum so gewählt habe, dass ich einen Eintrag größergleich (≥) 1. Januar 1996 und den anderen kleinergleich (≤) 31.Dezember 1996 gesetzt habe. Hm, aber das wäre ja wenn überhaupt ein logischer Fehler.

Seh ich den Wald vor lauter Bäumen nicht??

EDIT: SCH...

sorry, zu dumm zum Link anklicken... Ich weiß zwar, dass meine Augen schlechter geworden sind, aber das ist nur peinlich! Sorry!

UNd vielen Dank für die Hilfe!

B
112 Beiträge seit 2008
vor 6 Jahren

Aber dass deine beiden Queries im Startpost syntaktische Fehler haben, hast du gelesen?

Vielleicht bin ich vollkommen blind, aber ich verstehe nicht, wieso es beim ersten query funktioniert, beim zweiten nicht^^

Da würde ich mich jetzt gern anhängen: ich dachte eigentlich, ich wüsste, was an den beiden Abfragen auf genau die gleiche Weise falsch ist, aber warum Du bei der ersten richtige Ergebnisse (oder überhaupt ein Ergebnis) bekommen hast, bleibt mir ein Rätsel.

Der "DB Browser for SQLite" teilt mir bei einer vergleichbaren Fehlkonstruktion sofort mit, dass hier ein Syntaxfehler vorliegt. Ebenso sqlite3.exe. Dasselbe würde ich eigentlich von jedem derartigen Programm erwarten.