strftime formatiert einen Datumswert, der bereits als Date/Time Type vorliegt. Genau das ist bei Dir nicht der Fall. Deine Datumswerte sind String.
Eine Funktion, die aus einem String ein Datum macht, muss wissen, welcher Wert an welcher Position steht. DATE() von SQLite fackelt nicht lang, sondern gibt das einfach vor:
YYYY-MM-DD
Ist Dein Datum als Stringwert anders aufgebaut, als diese Vorgabe, musst Du es anpassen, wie Du selbst schon versucht hast, Du hast nur nicht die Vorgabe getroffen.
Hier ist das Verfahren auch für Deine Where Clause angewendet:
Code:
select datum, -- der pure String, das "Problemdatum"
date(datum), -- benutzen, wenn Datumsstring bereits richtig formatiert ist
-- ist in Deinen Daten nicht der Fall, --sondern:
date(substr(datum, 7, 4) || '-' || -- dann selbst das notwendige Format zusammenstellen
substr(datum, 4, 2) || '-' ||
substr(datum, 1, 2))
from meindatum -- geht auch in der Where Clause
where date(substr(datum, 7, 4) || '-' || -- baue ein echtes Datum aus Deinen Daten
substr(datum, 4, 2) || '-' ||
substr(datum, 1, 2)) -- und rechne oder vergleiche damit
between date('2018-12-01') and date('2018-12-31') -- hier kann man die Datumsgrenzen als String gleich im richtigen Format angeben