Вопрос

WHERE `time` BETWEEN 'Jan 1 %' AND 'Jan 8 %' AND ...

Полученные результаты

Jan 1 00:33:23
Jan 10 08:52:05

Как бы я избегал результатов 10 января?

Я пробовал несколько разных сочетаний с%, <= и т. Д.

Любые идеи?

Спасибо

Это было полезно?

Решение

WHERE Time >= '1/1/2011' AND Time < '1/9/2011'

Или, если вы хотите результаты из любого года:

WHERE DATEPART( month, Time ) = 1 AND DATEPART( day, Time ) < 9

Другие советы

В настоящее время с этим запросом вы запутаете поисковую систему, потому что «между» предназначен для использования с числами или датами, когда вы используете его с строками.

Есть 2 решения вашей проблемы:

1) Преобразовать свое поле «Время» в «Дата» и хранить даты как «01-01-2010 00:00» (это самое здоровое решение, поскольку вы сделаете БД знаумельника, это поле даты) 2) :

WHERE `time` >= 'Jan 1' AND `time` < 'Jan 2'

Второе решение может дать странные результаты, поскольку он сравнивает 2 строки, а не 2 дат.

Я не могу попробовать это для вас здесь, но почему бы вам не попробовать с методом str_to_date? Вы можете изменить свое время времени на реальную дату, а затем не нужно делать эту строку сравнить:

WHERE STR_TO_DATE(`time`,'%d,%m,%Y') BETWEEN
'2010-01-01'
AND
'2010-01-09'

также см http://dev.mysql.com/doc/refman/5.5/en/date-andtime-functions.html#function_str-to-date.date.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top