2015-03-25 3 views
-1

У меня есть таблица MySQL с столбца даты.MySQL, где положение с DATE_FORMAT

Я пытаюсь выбрать все строки между тем или иным диапазоном дат, как,

select * from myTable mt 
    where DATE_FORMAT(mt.DateCol, '%y-%m-%b') between '01/03/2015' and '09/03/2015' 

где 01/03/2015 и 09/03/2015 находятся от и до диапазона дат, выбранного пользователем, который находится в формате dd/mm/yyyy и мой datecolumn в формате yyyy-mm-dd , Итак, как я могу напрямую выбирать строки с помощью функции DATE_FORMAT. Вышеуказанный запрос дает нулевой результат.

+0

Почему вы ожидали бы сравнение даты в формате 'гггг-мм-dd' с одним в формате 'mm/dd/yyyy', чтобы иметь смысл ...? – CBroe

ответ

1

А почему бы вам преобразовать дату в строку для этого? Вобще:

select * 
from myTable mt 
where mt.DateCol between '2015-03-01' and '2015-03-09'; 

Если вы хотите, вы можете добавить date() вокруг констант, чтобы подчеркнуть их типы:

select * 
from myTable mt 
where mt.DateCol between date('2015-03-01') and date('2015-03-09'); 
+0

Значения даты '01/03/2015' и' 09/03/2015' приходят в 'формате дд/мм/yyyy' по форме представления. Но я думаю, что MySQL использует только формат 'yyyy-mm-dd' для сравнения. – mpsbhat

+0

Самостоятельно пытается запросить без форматирования дат в кодах. – mpsbhat

+1

@mpsbhat. , , Затем преобразуйте строковые параметры в даты, используя 'str_to_date()'. –

Смежные вопросы