我想使用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
答案 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