【问题标题】:Average Time between Two Date Fields in MySQL?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 语法中。我还没有找到其他任何东西。有人可以帮忙吗?

【问题讨论】:

    标签: mysql ms-access vba


    【解决方案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) 生成格式化日期。衷心感谢。
    猜你喜欢
    • 2014-09-24
    • 2015-11-22
    • 2019-01-04
    • 1970-01-01
    • 2023-01-25
    • 1970-01-01
    • 2021-03-14
    • 2017-06-12
    • 2017-09-14
    相关资源
    最近更新 更多