2010-09-23 2 views
0

, что это отличается от этого MySQL Query:делают дифференциал DATE запроса в MySQL

WHERE MONTH(date) = MONTH(CURRENT_DATE) 

и это

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE() 

я попробовал оба, но я не могу видеть разные.

+0

Осторожно ... первый из этих двух не сможет воспользоваться любым индексом, который вы создали в столбце даты. –

ответ

1

Для сегодняшнего CURRENT_DATE, т.е .: 23-сентября-2010:

WHERE MONTH(date) = MONTH(CURRENT_DATE) является date также в сентябре, то есть между 01 сентября и 30 сентября каждого года.

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE() является date в течение последних 30/31 дней. Если мы на 23-м, это даст вам промежуток между 23 августа 2010 года и 23 сентября 2010 года.

+1

даты, которые вы дали для MONTH, немного вводят в заблуждение - год не учитывается, поэтому _any_ сентября будет соответствовать, а не только 2010. –

+0

@martin - вы правы, я исправлю это. – eumiro

0

Первый

WHERE MONTH(date) = MONTH(CURRENT_DATE) 

подберет строки, где месяц date колонки такая же, как в текущем месяце (например, все строки, для которых месяц date поля является сентябрь.

второй один

WHERE date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 1 MONTH) AND CURRENT_DATE() 

подберет строки, для которых date поле является теперь и месяц назад.

Смежные вопросы