2015-07-08 4 views
0

Я хочу получить данные для дат между 2015-05-01 и 2015-06-01 с использованием SQL. Пожалуйста, помогите мне с запросом.Как получить данные за предыдущий месяц в SQL

Запрос я использовал:

select *,count(id) as multiple_visitors 
    from table1 
    where id=123 
     and (date(server_time) between (CURDATE() - INTERVAL 31 DAY) AND CURDATE()) 
    group by user_id having count(id)>1 
+0

http://stackoverflow.com/a/11808253/4595675 –

+0

трудно получить его без информации о вашей базе данных/структуре таблицы ... – Julo0sS

ответ

0

Попробуйте использовать "WHERE" с MONTH(date).

Как это:

SELECT * FROM Table 
    WHERE MONTH(date) = 1 
1

Вы можете сделать это с month() и year():

where month(server_time) = month(curdate() - interval 1 month) and 
     year(server_time) = year(curdate() - interval 1 month) 

Однако, я рекомендую немного более сложное выражение:

where server_time >= date_sub(date_sub(curdate(), interval - day(curdate()) + 1 day), interval 1 month) and 
     server_time < date_sub(curdate(), interval - day(curdate()) + 1 day) 

преимущество заключается в том, что не являются функциями на server_time, поэтому механизм базы данных может использовать индекс, если это необходимо.

В качестве примечания: выражение date_sub(curdate(), interval - day(curdate()) + 1 day) получает полночь в первый день месяца.

+0

Спасибо, что работает !! +1 –

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