如何在SQL中检索上个月的数据

时间:2015-07-08 11:19:14

标签: mysql

我想使用SQL获取2015-05-01和2015-06-01之间的日期数据。 请帮我查询。

我使用的查询是:

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 

2 个答案:

答案 0 :(得分: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)在每月的第一天午夜。

答案 1 :(得分:0)

尝试使用&#34; WHERE&#34;与MONTH(date)

像这样:

  SELECT * FROM Table
  WHERE MONTH(date) = 1