mysql从最后一个条目中选择15分钟

时间:2018-04-10 16:05:35

标签: php mysql date datetime

尝试仅从表中选择大于或等于从上一个条目中选择的15分钟的条目。我尝试了以下但只能按时获得15分钟的参赛作品。示例09:00,09:15,09:30等......

SELECT * FROM table  WHERE  MINUTE(column) % 15 = 0;

该列是DATETIME。

想要查找选择条目是否为09:02然后下一个将是09:17或更高。但是如果之后的条目是13:33那么它会在那之后选择高于或等于13:48的条目。

由于

问题更新:(04/10/18 3:15中央)

我有一个带有DATETIME列的条目列表的表。我希望选择并计算DATETIME列在特定用户/帐户上相隔15分钟或更长时间的行。因此,如果用户/帐户1有条目2018-01-06 04:47:11,2018-01-06 04:47:59,201-01-06 04:49:11,2018-01-06 04:50 :01,2018-01-06 04:55:08,2018-01-06 05:00:11,2018-01-06 05:02:00,2018-01-07 04:47:12,和2018- 01-07 05:05:11,它应该只返回3个。

3 个答案:

答案 0 :(得分:2)

您可以使用该查询:

SELECT * FROM table WHERE TIMESTAMPDIFF(MINUTE, column, last_entry_time) >= 15;

只要构建了查询,last_entry_time就是您所谓的“最后一个条目”的日期时间

答案 1 :(得分:1)

混合解决方案

我可以建议您计算最后15分钟并将其存储在变量中吗?

$minusfifteen = date('Y-m-d H:i:s', time()-900);
$query = "SELECT * FROM table  WHERE  column >= $minusfifteen";

请务必更改我用来匹配您的日期时间格式,如果是的话。

SQL soltion

纯mysql解决方案:

SELECT * FROM table WHERE column >= DATE_SUB((SELECT MAX(column) FROM table), INTERVAL 15 MINUTE)

答案 2 :(得分:0)

问题更新:(04/10/18 6:24 pm central)

这将返回我正在寻找的结果,但是想要一个MySQL(非混合解决方案)

$checkTime = 0; // just to start
$count= 0;
$data = array();
$sql = "SELECT  * FROM table WHERE user='10' ORDER BY DateTimeColumn ";
$result = mysqli_query($db1,$sql);
while($rowData = mysqli_fetch_array($result)) {
    if(strtotime($rowData['DateTimeColumn']) >= $checkTime) { // is it 15 or more minutes later
        $checkTime = strtotime($rowData['DateTimeColumn']) + 900; // add 15 minutes
        $count++;
        array_push($data, $rowData);
    }
}