2013-04-17 134 views
0

我使用的是PHP/MySQL预订系统,我使用Google折线图来尝试显示当月的总销售额以及前3个月个月。MySQL:从当前月份和前3个月返回记录

每个预订都有标准phpmyadmin“日期”格式的日期,所以yyyy:mm:dd。

因此,即时查找从4个查询中获得4个结果,每个查询筛选出某个月并获取该月份每个预订的总和。

我的问题是,我如何区分查询中的月份?我将如何构建查询?

+0

示例查询和示例代码? –

+0

该表仅包含预订,日期和费用。我只需要根据查询中输入的月份来获取预订,但我不知道如何构建查询。 – OllyBarca

回答

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 MONTH(booking_date)=7 and YEAR(booking_date)=2013; 

Select * from bookings where MONTHNAME(booking_date)='July' and YEAR(booking_date)=2013; 

或者得到了几个月,你可以做到这一点(这种方法要求你维护每个月的结束日期表格以补偿fo [R闰年虽然):

select * from bookings where booking_date>'2013-06-30' AND booking_date<'2013-08-01'; 
+0

在MySQL中没有双等号,所以你应该删除它。在这种情况下,你也不需要引用整数。 – Kermit

+0

@FreshPrinceOfSO是的,注意到我发布后大约2秒。 –

+0

在你的第四个查询答案很好,谢谢一堆。 – OllyBarca

1

排在首位,原谅我的英语....

我知道这是旧线和无法评论,但@AbsoluteƵERØ,这个问题的答案适用于当前月份,例如,如果我得到了七月记录2013-2014-2015,查询将返回在该月的记录那些年....为了避免和使用发布的代码:

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; 
相关问题