Я пытаюсь выбрать данные из диапазона дат, используя BETWEEN
в предложении, где, но это не возвращает правильный результат. Поле даты находится в формате 'mm/dd/YYYY'
и тип varchar
Мой запрос,
select * from time_track where track_date between '01/01/2015' and '01/21/2015'
Но результат содержит данные с 2014 года.
Кто-нибудь может мне помочь, пожалуйста
Вам необходимо преобразовать строку даты в реальную дату
select * from time_track
where STR_TO_DATE(track_date ,'%d/%m/%Y') between '2015-01-01' and '2015-01-21'
Тогда вам не нужно конвертировать данные в ваших запросах, и вы можете использовать индексы, что делает их очень быстрыми.
Я получил ответ.
SELECT * FROM `time_track` where DATE_FORMAT(STR_TO_DATE(track_date, '%c/%d/%Y'), '%Y-%m-%d') between '2015-01-01' and '2015-01-21'
Попробуйте этот формат
выберите * из time_track, где track_date> = ‘2015-01-01 00:00:00’ И track_date <= ‘2015-01-01 00:00:00’
неверный формат вашей даты.
Вы должны использовать этот формат в вашем запросе: гггг-мм-дд.
выберите * из time_track, где track_date между ‘2015-01-01’ и ‘2015-01-21’
Marco
Сначала конвертируйте две даты, которые вы выбрали
$from=strtotime(date("Y-m-d H:i:s", strtotime($yourfromdate)))
$to=strtotime(date("Y-m-d H:i:s", strtotime($yourtodate)))
select * from time_track where track_date>='$from' and track_date<='$to'
Чтобы MySQL между предложением работал ожидаемым образом, идеальными значениями будут целое число, дата, время или дата / время. Попробуйте изменить тип данных с varchar на datetime. Это сделало бы вашу работу по сравнению.