MySQL между датами, которые охватывают несколько лет

StackOverflow https://stackoverflow.com/questions/5379366

Вопрос

Привет, мне было интересно, почему это утверждение работает в 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'
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top