2012-10-16 10 views
8

Ich habe ein Problem bei der Auswahl eines Datumsbereichs mit MySQL.Auswahl des Datumsbereichs MySQL mit date_format

SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y') 
    FROM (`immmvt`) 
WHERE date_format(MvtDate,'%d-%m-%Y') BETWEEN '01-01-2010' AND '02-01-2010' 

mvtDate Typ Datum wie 2010-01-01 00:00:00.

Wenn ich die Abfrage ausführen, funktioniert das Ergebnis für die Tage und die Monate, aber es zeigt mir auch andere Ergebnisse aus anderen Jahren.

Wie 01-01-2011 usw.

+0

Vergleich der Daten von 'DATE' Zeit konvertieren wollen, ist besser im Vergleich zu dem, was du versuchst es. – hjpotter92

Antwort

11

Sie sollten STR_TO_DATE verwenden, da Sie string zurück zu date

SELECT MvtDate, date_format(MvtDate,'%d-%m-%Y') 
FROM `immmvt` 
WHERE MvtDate BETWEEN STR_TO_DATE('01-01-2010','%d-%m-%Y') AND 
         STR_TO_DATE('02-01-2010','%d-%m-%Y') 
 
FYI: DATE_FORMAT() converts date to formatted string representation. 
    STR_TO_DATE() converts formatted string back to date 
+0

Ich fühle mich schlecht, danke :) – user1749399

2
SELECT MvtDate,date_format(MvtDate,'%d-%m-%Y') 
    FROM (`immmvt`) 
WHERE date_format(MvtDate,'%d-%m-%Y') IN ('01-01-2010', '02-01-2010') 
+0

Nun, das ist die beste Antwort, die ich fand, die sehr schnell ist. –

Verwandte Themen