MySQL中两个日期字段之间的平均时间?

Posted

技术标签:

【中文标题】MySQL中两个日期字段之间的平均时间?【英文标题】:Average Time between Two Date Fields in MySQL? 【发布时间】:2013-06-20 16:35:59 【问题描述】:

我正在开发一个跟踪呼叫中心电话联系人的 mysql 数据库。电话代理使用 Access 应用程序输入呼叫信息,我正在根据该信息生成报告,无论是在 Access 还是 Excel VBA 中。

每个联系人都保存在联系人表中,其中包含有关联系人的信息以及“ContactDateTimeInitiate”和“ContactDateTimeComplete”日期字段。记录中有呼叫类型的字段,我需要根据很多不同的视图提取信息。例如,针对单个类别、针对部门、针对月、针对日等。

我的问题是,如何生成 (contactdatetimecomplete-contactdatetimeinitiate) 的平均值?我使用多个记录集使用一些低效的循环来完成它,但我确信有一种更简单的方法可以做到这一点。

这将返回数百个数字 - 它应该接近 5 或 10 分钟:

rst.Open "Select avg(timediff(contactdatetimecomplete,contactdatetimeinitiate)) as expr1 from contacts", cnn, adOpenStatic, adLockBatchOptimistic

我可以很好地连接到数据库,问题出在 SQL 语法中。我还没有找到其他任何东西。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

试试这个:

 SELECT AVG(TIMESTAMPDIFF(SECOND, 
                          contactdatetimeinitiate, 
                          contactdatetimecomplete)
           ) AS average

这应该会为您提供以秒为单位的平均接触持续时间。

如果您真的担心小数秒时间间隔,可以尝试使用MICROSECOND 代替SECOND。在这种情况下,您需要

     SELECT AVG( 0.000001 * TIMESTAMPDIFF(MICROSECOND, 
                              contactdatetimeinitiate, 
                              contactdatetimecomplete)
               ) AS average

此答案对 MySQL 有效。

【讨论】:

我之前没有在MySQL中使用过这些函数,但是快速查找了一下。看来他的错误是使用 TIMEDIFF(返回时间)和 TIMESTAMPDIFF(返回整数)。 +1 完美,立即修复。谢谢你俩! Timestampdiff 以秒为单位返回值,我使用 DateAdd("s", rst.Fields("expr1"), testDate) 生成格式化日期。衷心感谢。

以上是关于MySQL中两个日期字段之间的平均时间?的主要内容,如果未能解决你的问题,请参考以下文章

mysql两个日期计算天数

MYSQL计算两个字段日期差

在 SQL 中选择日期之间的平均差异

两个字段中两个日期之间的日期

MySQL中日期之间的月份差异

MySQL中日期之间的月差