Mysql проблема с подстановочными запросами - PullRequest
0 голосов
/ 11 января 2011
WHERE `time` BETWEEN 'Jan 1 %' AND 'Jan 8 %' AND ...

Результаты

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

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

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

Есть идеи?

Спасибо

Ответы [ 3 ]

2 голосов
/ 11 января 2011
WHERE Time >= '1/1/2011' AND Time < '1/9/2011'

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

WHERE DATEPART( month, Time ) = 1 AND DATEPART( day, Time ) < 9
0 голосов
/ 11 января 2011

Я не могу попробовать это для вас, но почему бы вам не попробовать метод 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-and-time-functions.html#function_str-to-date

0 голосов
/ 11 января 2011

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

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

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

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

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

...