繁体   English   中英

mysql从最后选择的条目开始15分钟

[英]mysql 15 minutes from last entry selected

尝试仅从表中选择与上次选择的条目相比大于或等于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,2018-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。

您可以使用该查询:

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

假设查询已建立,因此last_entry_time是您称为“ 最后一个条目 ”的日期时间

混合溶液

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

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

如果是这样,请确保更改我用来匹配您的日期时间格式。

SQL解决

纯mysql解决方案:

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

问题更新:(美国中部时间04/10/18 6:24 pm)

这将返回我要查找的结果,但需要一个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);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM