2012-10-16 17 views
8

Mam problem z wyborem zakresu dat za pomocą MySQL.Wybieranie zakresu dat MySQL z datownikiem

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 jest data jak 2010-01-01 00:00:00.

Po uruchomieniu zapytania wynik sprawdza się w dniach i miesiącach, ale pokazuje też inny wynik z innych lat.

Jak 01-01-2011 itp

+0

Porównanie dat 'dzień spełnienia wymogu czasu jest lepsza w porównaniu do tego, co próbujesz. – hjpotter92

Odpowiedz

11

Należy użyć STR_TO_DATE ponieważ chcesz przekonwertować string powrotem do 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

Czuję się źle, dziękuję :) – 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

cóż to jest najlepsza odpowiedź, którą znalazłem, która jest bardzo szybka. –