我正在使用PHP / MySQL预订系统,我正在使用Google Line Chart来尝试显示当月以及之前3个月的总销售额。
每个预订都有标准的phpmyadmin“date”格式的日期,所以yyyy:mm:dd。
因此,我希望从4个查询中获得4个结果,每个查询过滤掉某个月并从该月获取每个预订的总和。
我的问题是,如何区分查询中的月份?我将如何构建查询?
答案 0 :(得分:6)
基于标题:
select * from bookings where MONTH(CURDATE())=MONTH(booking_date);
select * from bookings where MONTH(booking_date) > MONTH(CURDATE()-INTERVAL 3 MONTH) and < MONTH(CURDATE() + INTERVAL 1 MONTH);
对于简单的每月搜索,您可以使用以下内容:
Select * from bookings where MONTHNAME(booking_date)='July' and YEAR(booking_date)=2013;
或者:
Select * from bookings where MONTH(booking_date)=7 and YEAR(booking_date)=2013;
此外,由于你已经有了几个月,你可以这样做(这种方法要求你保留每个月的结束日期表,以补偿闰年):
select * from bookings where booking_date>'2013-06-30' AND booking_date<'2013-08-01';
答案 1 :(得分:1)
首先,原谅我的英语......
我知道这是老线程并且不能发表评论但是,@AbsoluteƵERØ,该答案适用于本月,例如,如果我在2013-2014-2015获得了7月的记录,查询将返回当月的记录那些年....为了避免这种情况并使用你发布的代码:
SELECT * FROM bookings WHERE MONTH(CURDATE()) = MONTH(booking_date) AND YEAR(CURDATE()) = YEAR(booking_date);
注意:如果使用“名称形式”并指定年份没有问题,请执行以下操作:
SELECT * FROM bookings WHERE MONTH(CURDATE()) = MONTH(booking_date) AND YEAR(booking_date) = 2013;