Ответ 1
lastModified - предположительно, дата и время. Чтобы преобразовать это в дату, вы можете просто обернуть его в DATE(), т.е. DATE(lastModified)
. DATE()
возвращает часть даты значения datetime, которое в этот день эффективно 00:00.
SELECT
name,
email
FROM users
WHERE DATE(lastModified) = DATE( DATE_SUB( NOW() , INTERVAL 1 DAY ) )
Использование этого для соответствия WHERE
, хотя и было бы неэффективным, поскольку для всех строк потребуется DATE, применяемая к ним, и поэтому он, вероятно, сканирует всю таблицу. Эффективнее сравнить lastModified
с верхней и нижней границами, которые вы ищете, в этом случае >= 00:00 на SUBDATE(NOW(),INTERVAL 1 DAY)
и < 00:00 на NOW()
Поэтому вы можете использовать BETWEEN, чтобы сделать ваш выбор, давая следующее.
SELECT
name,
email
FROM users
WHERE lastModified
BETWEEN DATE( DATE_SUB( NOW() , INTERVAL 1 DAY ) )
AND DATE ( NOW() )