我有一个带时间戳的表,我想要检索彼此之间有10分钟差异的所有记录。 我举个例子: 我在我的数据库中有4个日期:
01-12-2015 15:45:10
01-12-2015 15:55:10
01-12-2015 15:25:10
01-12-2015 15:15:10
我只想检索彼此之间有10分钟差异的2个日期。
我不想获取时间戳在当前时间戳的10分钟内的所有记录。我想选择它们之间相差10分钟的所有记录。 所以在我的例子中我想选择日期:
01-12-2015 15:45:10
01-12-2015 15:55:10
这两个日期之间应该有10分钟的差异。 我怎么能这样做?
答案 0 :(得分:3)
您可以使用now()
获取当前时间。所以:
select t.*
from t
where t >= date_sub(now(), interval 10 minute);
答案 1 :(得分:0)
以下是如何计算两个日期在当前时间内有10分钟差异的示例。第一个参数说明当前时间。
SELECT TIMEDIFF('2015-12-11 08:20:00','2015-12-11 08:10:00')
答案 2 :(得分:0)
我希望你有一个索引。在index = index + 1上创建一个JOIN - >每行都与前一行连接。然后计算时间差异并仅选择差异大于10分钟的那些行。
SELECT *
FROM dates AS a LEFT OUTER JOIN dates AS b
ON a.id = b.id+1
WHERE a.timestamps-b.timestamps >= 600
答案 3 :(得分:0)
尝试:
Select * from a where a.id not in
(select b.id from a b where TIMEstampDIFF(SECOND,a.mydate,b.mydate)<=600)
and a.id not in
(select c.id from a c where TIMEstampDIFF(SECOND,a.mydate,c.mydate)>600)
答案 4 :(得分:0)
您可以从sql查询中获取数据并在php文件中编写逻辑,如下所示:
$select = mysql_query("SELECT your_datetime_column_name as time,UNIX_TIMESTAMP(your_datetime_column_name) as time_string FROM your_table_name");
$result = mysql_fetch_array($select);
$final_result= NULL;
$j=0;
foreach($result as $ff)
{
foreach($result as $ff11)
{
if(abs($ff11['time_string'] - $ff['time_string']) ==600 ){
$final_result[$j]['time1']=$ff['time'];
$final_result[$j]['time2']=$ff11['time'];
$j++;
}
}
}
并在数组$ final_result中,您将获得所有日期配对,差异为10分钟。 希望它会对你有所帮助。