sql suche Formel...

hallo,
ich habe eine Datenbank mit über 10.000 Einträgen, eine Spalte ist char.
date ging nicht weil nicht immer ein Datum vergeben wurde, ich weis das ist blöd.
Die Einagbe der Spalte kann so aussehen 24.12.2014
Zum Problem: ich will alle Zeilen haben von April 2011 bis Dez. 2014
…between 01.04.2011 AND 30.12.2014

Wie kann ich das Kind aus dem Brunnen holen?

wenn kein Datum vergeben wurde, speichere NULL. Ein Datum in einer varchar (char ist noch schlimmer) Spalte zu speichern ist in 99,999% der Fälle ein Fehler. Du solltest das nicht tun. Wenn das ein korrektes Datum wäre, dann wäre die Abfrage kein Problem.

So bist Du jetzt drauf angewiesen, den String in ein DATE zu verwandeln - und Du kannst eigentlich darauf warten, dass das irgendwann auf die Nase fällt, wenn jemand denkt, dass ein Datum im ISO Format besser wäre.

Mit einem varchar als Daten, musst du das erst umwandeln:

where to_date(the_stupid_date_column, 'dd.mm.yyyy') between date '2011-04-01' and  date '2014-12-31';

Sobald irgendwann mal ein Datum in einem anderen Format als dd.mm.yyyy eingefügt wird, fällt das aber auf die nase.

select * from kunden where to_date(datumb, 'dd.mm.yyyy') between date '2011-04-01' and  date '2014-12-31';

leider bekomme ich einen Fehler:

ERROR:  invalid value "in" for "dd"
DETAIL:  Value must be an integer.

Das bedeutet, dass da eben doch kein richtiges/gültiges Datum in der Spalte steht - genau der Grund warum man sowas eben nicht in einer VARCHAR Spalte speicher sollte.