要制作折线图。我想查询相差5天的差异。 假设我有以下行:
booking_date
2015-02-1
2015-02-3
2015-02-5
2015-02-6
2015-02-6
2015-02-9
2015-02-10
2015-02-15
2015-02-17
2015-02-23
2015-02-28
在上表列中,它包含日期。现在我该如何进行mysql查询,以便它可以返回5天的差异,如:
1 => 3 // count of date between 2015-02-1 & 2015-02-05 is 3
2 => 4 // count of date between 2015-02-06 & 2015-02-10 is 4
3 => 1 // count of date between 2015-02-11 & 2015-02-15 is 1
4 => 1 // count of date between 2015-02-16 & 2015-02-20 is 1
5 => 1 // count of date between 2015-02-21 & 2015-02-25 is 1
6 => 1 // count of date between 2015-02-26 & 2015-02-30 is 1
是否像上面那样直接查询。我不是很擅长mysql。但是可以很好地做php。
答案 0 :(得分:0)
你的意思是做点什么:
SELECT COUNT(1) FROM {table_name} WHERE booking_date > 2015-02-01 AND booking_date < 2015-02-05
(完全关闭内存,因此您可能需要略微更改它)
答案 1 :(得分:0)
SELECT count(*)
FROM tbl
WHERE booking_date >= start_date
AND booking_date <= end_date
答案 2 :(得分:0)
您可以执行以下操作以获取同一查询中的所有内容。
首先获取您希望在5天内开始分组的日期的unix时间戳。在你的例子中,2015-02-01 - &gt; 1422748800
然后查询如下:
SELECT COUNT(*), FLOOR((UNIX_TIMESTAMP(booking_date) - 1422748800)/ (60*60*24*5)) as FiveDayPackNumber from tbl GROUP BY FLOOR((UNIX_TIMESTAMP(booking_date) - 1422748800)/ (60*60*24*5))
Haven未对其进行测试,因此可能需要进行一些调整,但您可以理解:它将按照自初始日期开始的5天包的数量进行分组,从0开始。