2016-07-05 17 views
0

Ich habe eine SQLite-Datenbank, in der ich versuche, alle Zeilen mit einem Stichtag (erstellt als DATETIME, Typof (Deadline) liefert Text) nach heute. Hier die Termine abgestimmt gegen das heutige Datum:SQLite Datumsvergleich Seltsamkeit

sqlite> SELECT deadline, Date('now') FROM confs; 
2016-08-28|2016-07-05 
2016-06-30|2016-07-05 
... 

Jetzt, wenn ich versuche, Daten über den Tag hinaus zu wählen:

sqlite> SELECT deadline FROM confs WHERE deadline > Date('now') 
sqlite> 

keine Zeilen zurückgegeben werden. Auf der anderen Seite,

sqlite> SELECT deadline, Date('now') FROM confs WHERE deadline < Date('now'); 
2016-08-28|2016-07-05 
2016-06-30|2016-07-05 
... 

Ich habe versucht:

  • die Tabelle mit "Frist" vom Typ Text zu schaffen - kein Erfolg, die gleiche Resultat.
  • Casting entweder Frist oder Datum ('jetzt') als Text - kein Erfolg, das gleiche Ergebnis.
  • Casting sowohl Deadline und Datum ('jetzt') als Text - kein Erfolg, dasselbe Ergebnis.
  • mit WHERE Deadline> '2016-07-05' - kein Erfolg, dasselbe Ergebnis.
  • mit TimBiegelsen Vorschlag: WHERE Frist> STRFTIME ('% Y-% m-% d', 'jetzt') - kein Erfolg, dasselbe Ergebnis.

Ich denke, dass das Problem mit der Art der Frist verbunden ist, aber das ist eine Vermutung.

Das Ziel ist es, eine Tabelle mit einer Spalte mit Daten zu haben, wo ich Daten nach Datum ('jetzt') auswählen kann. Was mache ich falsch?

+0

@TimBiegeleisen: erstellt als DATETIME NOT NULL. SELECT typeof (Frist) FROM confs returns 'text' –

+0

Hinweis: 'wählen Sie Deadline von confs, wo Deadline = '2016-08-28';' gibt keine Zeilen zurück - so gibt es wahrscheinlich ein Problem mit den Werten oder Typen in diese Spalte. –

+0

Ihre Spalte "Deadline" ist in einem seltsamen Format. Verwenden Sie stattdessen 'STRFTIME (Deadline)'. –

Antwort

0

Okay, dumme ich. Stellt sich heraus, dass ich einen Dateneingabefehler gemacht habe: die Deadlines beginnen mit einem Leerzeichen.