Извлечение даты части datetime действительно необходимо?

Рассмотрим следующие два запроса (один использует DATE()функцию для извлечения SELECT count (*) FROM creatives WHERE DATE ( creative_last_seen ) > = SUBDATE ( CURDATE (), 1 ) AND DATE ( creative_last_seen ) < curdate (); из SELECT count (*) FROM файлов объявлений WHERE creative_last_seen > = SUBDATE ( CURDATE (), 1 ) AND creative_last_seen < curdate (); поле, а другое нет).

DATE()

Общий ответ DATE (): 1 мин. 19 сек.

creative_last_seen

Общее время ответа: 8,9 сек.

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

Первоначально я думал, что мне нужно использовать dateфункцию, чтобы заставить запрос работать. Но, похоже, он работает отлично, без timeфункции. Я что-то пропустил, используя последний запрос?

mysql,

0

Ответов: 1


0

Тип DATE используется для значений с частью даты, но без временной части.
Тип DATETIME используется для значений, которые содержат как дату, так и временные части

В качестве time datetimeтипа данных он включает временную часть, которая будет учитываться во время сравнения.

Если вас интересует только dateсравнение, timeвы не можете использовать первый запрос

Если вы хотите, чтобы timeчасть учитывалась во время сравнения, то перейдите со вторым запросом

DEMO

select NOW() > CURDATE();
# output : 1

select date(NOW()) > CURDATE();
# output : 0
MySQL,
Похожие вопросы