获取created_at时间的每小时的最小值,最大值和平均值

时间:2017-07-06 13:15:25

标签: php datetime

我有一个包含字段created_at的表,其中包含以下值:

2017-06-06 13:04:50
2017-06-06 13:09:54
2017-06-06 13:20:20
2017-06-06 13:40:29
2017-06-06 14:05:30
2017-06-06 14:12:50
2017-06-06 14:30:40
2017-06-06 15:01:36
2017-06-06 15:06:16

我想要的是创建一个新表并执行以下操作: 我希望每小时得到最小值,最大值和平均值,并将其保存到另一个表格中。

2 个答案:

答案 0 :(得分:0)

这是一个开始。
我使用Y-m-d H值创建新的日期值 由于我在同一小时内删除分钟和秒钟所有时间都是重复的。

我用数组计数值计算重复值。

https://3v4l.org/690ne

$arr = array("2017-06-06 13:04:50",
"2017-06-06 13:09:54",
"2017-06-06 13:20:20",
"2017-06-06 13:40:29",
"2017-06-06 14:05:30",
"2017-06-06 14:12:50",
"2017-06-06 14:30:40",
"2017-06-06 15:01:36",
"2017-06-06 15:06:16");

Foreach($arr as $val){
    $newarr[] = date("Y-m-d H", strtotime($val));
}

Var_dump($newarr);

Var_dump(array_count_values($newarr));

上述代码的输出是:

  

数组(9){
    [0] =>
    string(13)“2017-06-06 13”
    [1] =>
    string(13)“2017-06-06 13”
    [2] =>
    string(13)“2017-06-06 13”
    [3] =>
    string(13)“2017-06-06 13”
    [4] =>
    string(13)“2017-06-06 14”
    [5] =>
    string(13)“2017-06-06 14”
    [6] =>
    string(13)“2017-06-06 14”
    [7] =>
    string(13)“2017-06-06 15”
    [8] =>
    string(13)“2017-06-06 15”
  }
  数组(3){
    [“2017-06-06 13”] =>
    INT(4)
    [“2017-06-06 14”] =>
    INT(3)
    [“2017-06-06 15”] =>
    INT(2)
  }

编辑阅读David的回答似乎不清楚“每小时”是什么意思 大卫把它读成一小时的滚动时间 我把它读作13-14之间,14-15之间等等。

答案 1 :(得分:0)

IMO整数比datetime更容易操作。步骤1将值转换为时间戳。那么这是一个数学运算问题,如

获得三个值后,使用PDO http://php.net/manual/en/book.pdo.php将数据插入表格。

(注意:请勿使用mysql数据库扩展!)