Сравнение дат MySQL, возвращающее разные результаты

У меня есть запрос выбора строк между датами.

SELECT * FROM `table` WHERE statusDate >= '2014-10-01' AND statusDate <= '2014-10-31'

Когда я использую приведенный выше запрос, он возвращает значительно меньше строк, чем следующий запрос …

SELECT * FROM `table` WHERE statusDate > '2014-09-30' AND statusDate < '2014-11-01'

Технически я бы подумал, что это даст те же результаты, но это не так.

Насколько я понимаю, нижний запрос состоит в том, что он выбирает даты выше и ниже указанных дат, не включая. Почему результаты будут другими?

0

Решение

Если statusDate это DATETIME В столбце время дня результаты будут разными для строк в последний день месяца. Когда вы конвертируете дату 2014-10-31 к DATETIME, его 2014-10-31 00:00:00, Если есть строка, чья statusDate является 2014-10-31 09:23:11, он не будет выбран первым запросом, но будет выбран вторым запросом.

Вы можете решить это с помощью:

WHERE statusDate >= '2014-10-01' AND DATE(statusDate) <= '2014-10-31'

или вы можете добавить время к WHER пункт:

WHERE statusDate >= '2014-10-01' AND statusDate <= '2014-10-31 23:59:59'
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]