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中两个日期字段之间的平均时间?的主要内容,如果未能解决你的问题,请参考以下文章