需要解密插入数据的时间

时间:2017-09-20 14:22:57

标签: php mysql

我是sql的新手。请多多包涵。 我的Web主机上有一个MYSql数据库,我编写了一个php脚本来读取XML文件,并将xml中的数据存储到mysql表中。
当php脚本执行此操作时,它会使用名为Name的字段为每个记录添加时间戳(它的类型设置为datetime)。此脚本设置为每秒读取和插入一次 由于处理时间,互联网拥塞等,它并不总是每秒记录。我想知道平均有多少秒,它错过了。

这是问题......
有没有办法在SQL代码中询问"在每分钟,平均秒数是多少?"或者我需要使用php或其他代码进行处理吗?

感谢

编辑:我想知道"在每一分钟,我成功地在84%的时间内以秒为单位记录这些信息。或者是什么百分比?" 这个百分比可以简单地通过SQL代码确定,还是需要从数据库中提取数据并由其他脚本(如PHP等)处理?

1 个答案:

答案 0 :(得分:-1)

使用:

SELECT CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp)) AS minute, 
COUNT(*) AS count
FROM your_table_name 
GROUP BY CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp));

<强>解释

CONCAT(DATE(timestamp), ' ', HOUR(timestamp, ':', MINUTE(timestamp))是一种让记录按分钟分组的奇特方式。您拥有的timestamp字段包含DATE(YYYY-MM-DD),HOURMINUTE(HH:MM)组件。这条线只是提取那些部分。 CONCAT将它们粘合在一起形成一个字段。总体效果是截断字段的秒部分。

COUNT(*)是一个聚合函数,用于计算组中的所有记录。如果你想把结束号码作为&#39;命中的百分比。在一分钟内,你可以使用;

COUNT(*) / 60 AS count

COUNT(*) / 60 * 100 AS count

这里的神奇之处是GROUP BY,它告诉COUNT处理与SELECT相同的群组 - 将所有单个记录分组为1分钟的群组并允许他们被计算在内。