[Mysql] Between Datumsproblem

Spontan

Erfahrenes Mitglied
Schönen guten Tag,

Ich würde gern Datensätze zwischen bestimmten Tagen auslesen. Das Problem ist das die Spalte "od.orders_date" als text deklariet ist (schlecht zu ändern, hat sehr viele Datensätze)

Ich dachte mir klein Problem mit Between. Nur ich bekomme mit diesem Query:
SELECT ROUND( ot.value, 2 ) AS value, c.customers_firstname, c.customers_lastname, od.orders_date, c.customers_groups_id, o.orders_id
FROM orders_date od
LEFT JOIN orders_total ot, orders o, customers c ON od.orders_id = ot.orders_id
AND od.orders_id = o.orders_id
AND c.customers_id = o.customers_id
WHERE (
od.orders_date
BETWEEN '01.06.2005'
AND '21.06.2005'
)
AND ot.class = 'ot_total'
AND c.customers_groups_id = '3'
ORDER BY od.orders_date DESC

Die Datenstätze von:
# 20.07.2005 und
# 20.06.2005

Kann mir jemand mal bitte meinen Denkfehler erklären
 
Zuletzt bearbeitet:
Hi,

Du solltest die Spalte oders_date in ein Datum konvertieren. Da ansonsten halte die nicht als datum verglichen wird sondern halt die Zeichenkette an sich. Und bei diesem Vergleich wäre der 20.07. zwischen dem 01.06 und dem 21.06.
 
Klar ist eine Spalte vom Typ Date hier immer von Vorteil. Wenn die Textspalte sauber gefüllt ist, d.h. alle Zeilen haben das gleiche Format, könntest Du mit einer Umformatierung im Select arbeiten: Das between wird funktionieren wenn du z.B. mit substr() das Datum so neu zusammensetzt: JJJJMMDD also 20050620 und 20050720
 
Ich habe mir die Arbeit gemacht und doch ne Datumsspalte gemacht (Naja immerhin was für die Zukunft gelernt :) )

danke - erledigt
 
Zurück