Может быть, я что-то упускаю, но с типами DATETIME решение CURDATE () не работает. Это делает.
Джахмик
Кроме того, это занимает много времени, так как накладные расходы на преобразование DATETIME в дату с помощью функции DATE (), а затем сравнение с условием where.
Ропанк
Не используйте функции для столбцов, это заставляет запрос игнорировать индекс, вызывая медленные запросы. Проверьте мой ответ для альтернативного подхода stackoverflow.com/a/42365426/4311336
Если у столбца есть индекс, и к столбцу применяется функция, то индекс не работает и происходит полное сканирование таблицы, что вызывает очень медленный запрос.
Для того, чтобы использовать индекс и сравнить даты и время с сегодня / текущей датой, то можно использовать следующий.
Решение для ОП:
select*from users
where created > CONCAT(CURDATE(),' 23:59:59')
Пример для получения данных за сегодня:
select*from users
where
created >= CONCAT(CURDATE(),' 00:00:00')AND
created <= CONCAT(CURDATE(),' 23:59:59')
Или используйте МЕЖДУ для краткости
select*from users
where created BETWEEN
CONCAT(CURDATE(),' 00:00:00')AND CONCAT(CURDATE(),' 23:59:59')
CURDATE()
вернуть только дату, а не времяУзнайте больше: http://www.tomjepson.co.uk/tutorials/36/mysql-select-where-date-today.html
источник
если столбец имеет тип datetime.
источник
Если «создан» является типом даты и времени
CURDATE () также означает «2013-05-09 00:00:00»
источник
Ответ помечен как вводящий в заблуждение. Заданный вопрос есть
DateTime
, но заявлено, что нужно было простоCURDATE()
.Самый короткий и правильный ответ на это:
источник
Если у столбца есть индекс, и к столбцу применяется функция, то индекс не работает и происходит полное сканирование таблицы, что вызывает очень медленный запрос.
Для того, чтобы использовать индекс и сравнить даты и время с сегодня / текущей датой, то можно использовать следующий.
Решение для ОП:
Пример для получения данных за сегодня:
Или используйте МЕЖДУ для краткости
источник
источник
Код ниже работал для меня.
источник
json_date ["05/11/2011"]
источник
Вы можете вернуть все строки, а затем использовать функцию php datediff внутри оператора if, хотя это приведет к дополнительной нагрузке на сервер.
источник