MySQL между датами, которые охватывают несколько лет
-
28-10-2019 - |
Вопрос
Привет, мне было интересно, почему это утверждение работает в MySQL
SELECT COUNT(*) AS `numrows`
FROM (`myTable`)
WHERE DATE_FORMAT(creationDateTime, '%m/%d/%Y') BETWEEN '02/21/2011' AND '03/20/2011'
Но это не
SELECT COUNT(*) AS `numrows`
FROM (`myTable`)
WHERE DATE_FORMAT(creationDateTime, '%m/%d/%Y') BETWEEN '12/21/2010' AND '03/20/2011'
Первый оператор возвращает «XX» количество рядов, а второй возвращает «0»
Единственное различие, которое я вижу, заключается в том, что дата «от» - в 2010 году, а дата «окончания» - в 2011 году. Чтобы проверить, была ли это проблем Когда я установил дату начала как '01/01/1111tion ', это дало мне количество записей, которые были созданы за этот промежуток времени.
Есть ли что -то, что мне не хватает в отношении MySQL между датами и использованием с разных лет?
Спасибо за помощь!
Решение
Date_format () возвращает строку, а не дату. Используя его, вы заставляете сравнение строк вместо сравнения даты. Вы должны опустить date_format и вместо этого использовать строки даты yyyy-mm-dd.
Другие советы
Попробуйте использовать формат даты BETWEEN '2010-12-21' AND '2011-03-20'
. Анкет Также удалите функцию date_format ().
Итак, это:
SELECT COUNT(*) AS `numrows`
FROM `myTable`
WHERE creationDateTime BETWEEN '2010-12-21' AND '2011-03-20'