Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 时间间隔识别_Mysql_Datetime - Fatal编程技术网

Mysql 时间间隔识别

Mysql 时间间隔识别,mysql,datetime,Mysql,Datetime,我正在设计一个MySQL数据库,它将包含从远程源收集的逐分钟数据 我计划让数据表保存一个datetime字段,因此每行可能有3个月的数据,表示每分钟的值 我如何才能轻松识别数据中的差距?我应该用datetime吗 我将对应用程序本身使用PHP5 谢谢, Jim我会给每一行一个唯一的顺序引用(1,2,3…),然后在表上进行自连接 ...from mytable t1 join mytable t2 where (t1.ref+1)=t2.ref 根据您存储日期的方式,您可以(以某种方式)减去日期

我正在设计一个MySQL数据库,它将包含从远程源收集的逐分钟数据

我计划让数据表保存一个datetime字段,因此每行可能有3个月的数据,表示每分钟的值

我如何才能轻松识别数据中的差距?我应该用datetime吗

我将对应用程序本身使用PHP5

谢谢,
Jim

我会给每一行一个唯一的顺序引用(1,2,3…),然后在表上进行自连接

...from mytable t1 join mytable t2 where (t1.ref+1)=t2.ref
根据您存储日期的方式,您可以(以某种方式)减去日期,并确定是否存在间隔。将整个过程包装在一个查询中,该查询提取存在间隙的行


你可能想考虑将日期存储在一个特定的开始日期的秒。

< P>识别差距是一个有趣的问题。最好的方法取决于差距的大小,但这里有另一种解决方法,如果差距与您拥有的记录数量相比相当大,那么这种方法可能会更好

在查询中使用MySQL聚合函数来计算一组存储桶的记录数。桶的大小必须与您感兴趣的间隙类型相似。假设您对大约一天左右的间隔感兴趣,我会这样做:

SELECT TO_DAYS(my_timestamp), COUNT(*)
FROM my_table
GROUP BY TO_DAYS(my_timestamp)
这将返回天数和时间戳计数之间的关联。我会用Perl或Java(甚至R,见下文)这样的语言来处理数据

我将使用的技术是测试观察到的频率(计数)和预期频率之间的差异,即记录总数除以日期范围。每天的预期频率如下:

SELECT (SELECT COUNT(*) FROM my_table) / 
        ((SELECT TO_DAYS(MAX(my_timestamp)) FROM my_table) - 
         (SELECT TO_DAYS(MIN(my_timestamp)) FROM my_table) + 1)
现在,对于每个桶(请记住,在第一个结果中,完全缺失的天数将不会返回,不会作为零计数返回——您需要将它们视为零,您可以使用统计检验,卡方检验,来估计这是偶然的概率(有关详细信息,请参阅:)。计算基本上是((预期-观察)^2/预期)。这是对偏差可能性的估计


如果你需要计算样本中哪一个桶是低的,那么在这个计算值上设置一个合理的阈值,并在值超过阈值的情况下寻找桶。需要一个小的实验来设计一个适当的值,但是这是一个确定间隙的好方法。< /P>如果你正在构建一个日志应用程序,那么考虑U。sing TIMESTAMP data type在什么情况下会有间隙?缺少到远程源的连接?是的,到远程服务的连接不可用。(或者我的cron检查数据源由于某种原因没有运行)为什么R?嗯,它有一些非常好的用于统计计算的内置功能,如卡方检验