Mysql查询用于计算具有特定天差的行

时间:2015-02-16 07:32:11

标签: php mysql datetime

要制作折线图。我想查询相差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。

3 个答案:

答案 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开始。