-1

我正在使用 PHP/MySQL 预订系统,并且正在使用 Google 折线图来尝试显示当月以及前 3 个月的总销售额。

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

因此,我希望从 4 个查询中获得 4 个结果,每个查询过滤掉某个月份并获取该月每个预订的总和。

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

4

2 回答 2

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';
于 2013-04-17T22:50:57.490 回答
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;
于 2015-08-20T16:31:48.140 回答