Einzelnen Beitrag anzeigen

jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#13

AW: Datum liegt als String vor

  Alt 13. Aug 2019, 14:48
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
Gruß, Jo
  Mit Zitat antworten Zitat