mysql-是否有一条语句来计算数据库中读数之间的时间差?

mysql-是否有一条语句来计算数据库中读数之间的时间差?,第1张

概述我正在尝试使用2个读取器进行RFID访问控制,这类似于两因素身份验证系统.我一直在尝试从数据库中的不同RFID阅读器计算两个时间戳之间的时间差.我尝试了许多不同的方法来查询结果,但始终得到零或错误.我尝试了几种查询命令以各种组合计算时差ex:timestampdiff.我已经展示了一些我尝试过的. SELECT COUNT(*) FROM tag_log

我正在尝试使用2个读取器进行RFID访问控制,这类似于两因素身份验证系统.@H_403_2@我一直在尝试从数据库中的不同RFID阅读器计算两个时间戳之间的时间差.我尝试了许多不同的方法来查询结果,但始终得到零或错误.

我尝试了几种查询命令以各种组合计算时差ex:timestampdiff.我已经展示了一些我尝试过的.

   SELECT COUNT(*) FROM tag_logs   WHERE tag_logs = tag_no   BETWEEN timestamp ('timestamp','timestamp');SELECT *FROM tag_logsWHERE timediff is BETWEEN (MINUTE_SECOND,'timestamp','timestamp' )

我期望输出计算行数并检查它是否等于或大于特定数.最佳答案您可以使用MySQL TIMEDIFF function:

From a quick Google search:

The MysqL TIMEDIFF() function returns the difference between two time or datetime values. The way it works is,you provIDe the two values to compare,and TIMEDIFF() subtracts the second value from the first,then returns the result as a time value.

编辑:

在重新考虑了问题之后,看来您的任务似乎比乍看起来要复杂得多.如果要检查两个RFID存取之间的差异,则要困难得多.如果您要查询一次和另一次之间的所有记录,则难度要小得多.您的第一个示例:

SELECT COUNT(*) FROM tag_logsWHERE tag_logs = tag_noBETWEEN timestamp ('timestamp','timestamp');

只会将两个时间戳记的值相加,这将导致距unix纪元两倍的日期成为现在的日期;并且由于您没有为between关键字提供第二个值,因此将其选择为00​​:00:00(1970年1月1日,0个时点),并且将返回每条记录.

您的第二个示例:

SELECT *FROM tag_logsWHERE timediff is BETWEEN (MINUTE_SECOND,'timestamp' )

也不是太有意义.我知道您要如何处理此问题,但似乎与互联网上的示例结合在一起了.您想要的可能是这样的:

SELECT *FROM tag_logsWHERE timestamp BETWEEN timestamp1 AND timestamp2.

但是,您似乎想为每个记录计算时差.

您想要的是可以逐行处理并计算两条记录之间的时间戳差异的东西:

SELECT COUNT(*)FROM  (SELECT p1.ID,p1.time,TIMEDIFF(p2.time,p1.time)           AS timedifference       FROM tag_logs p1       INNER JOIN tag_logs p2       ON p2.ID = (p1.ID + 1)ORDER BY p1.ID ASC) time_tableWHERE time_table.timedifference >= '00:05:00'

Here is a functioning SQL fiddle for example

尝试#2!

SELECT COUNT(*)FROM (SELECT p1.ID,p1.ts,TIMEDIFF(timestamp(p2.ts),timestamp(p1.ts)) AS timedifference       FROM tag_logs p1       INNER JOIN tag_logs p2       ON p2.ID = (p1.ID + 1)ORDER BY p1.ID ASC) time_tableWHERE TIME_TO_SEC(time_table.timedifference) >= TIME_TO_SEC('00:10:00')

And another SQL Fiddle!

37次迭代….

SELECT COUNT(*)FROM (SELECT p1.ID,UNIX_TIMESTAMP(p2.ts) - UNIX_TIMESTAMP(p1.ts) AS timedifference       FROM tag_logs p1       INNER JOIN tag_logs p2       ON p2.ID = (p1.ID + 1)ORDER BY p1.ID ASC) time_tableWHERE time_table.timedifference >= TIME_TO_SEC('1:00:00')
总结

以上是内存溢出为你收集整理的mysql-是否有一条语句来计算数据库中读数之间的时间差? 全部内容,希望文章能够帮你解决mysql-是否有一条语句来计算数据库中读数之间的时间差? 所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166059.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存