2013-06-20 183 views
1

我正在研究跟蹤呼叫中心電話聯繫人的MySQL數據庫。電話代理商通過Access應用程序發出呼叫信息,並且基於該信息生成報告,無論是在Access還是在Excel VBA中。MySQL中兩個日期字段之間的平均時間?

每個聯繫人都保存在聯繫人表中,其中包含有關該聯繫人的信息以及'ContactDateTimeInitiate'和'ContactDateTimeComplete'日期字段。呼叫類型的記錄中有字段,我需要根據不同的觀點提取信息。例如,對於單個類別,部門,當月,當天等。

我的問題是,如何生成(contactdatetimecomplete-contactdatetimeinitiate)的平均值?我用一些使用多個記錄集的低效循環完成了它,但我確信有一個更簡單的方法來做到這一點。

這在hundreds-返回一個數它應該是接近5分鐘或10分鐘:

rst.Open 「選擇AVG(timeDiff測量(contactdatetimecomplete,contactdatetimeinitiate)),如從表達式1接觸」,CNN,ADOPENSTATIC ,adLockBatchOptimistic

我連接到數據庫就好了,問題出在SQL語法中。我還沒有找到其他東西。有人能夠幫助嗎?

回答

4

試試這個:

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

這應該給你在幾秒鐘內的平均接觸時間。

如果您真的擔心小數秒的時間間隔,您可以嘗試使用MICROSECOND代替SECOND。在這種情況下,您需要

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

此答案對MySQL有效。

+0

我以前沒有在MySQL中使用這些函數,但做了一個快速查找。看來他的錯誤是使用TIMEDIFF(它返回一個時間)和TIMESTAMPDIFF(它返回一個整數)。 +1 –

+0

完美,立即修復。謝謝你們倆! Timestampdiff以秒爲單位返回值,我使用DateAdd(「s」,rst.Fields(「expr1」),testDate)生成格式化日期。衷心感謝。 – Acantud

相關問題