2015-12-08 71 views
0

我的數據庫中有一個字段用於專家在電話上花費的總時間,另一個用於總通話時間。我試圖計算平均通話時間,但Access不會以hh:mm:ss格式返回號碼,而無需進行某些編碼。儘管我在VBA中編寫東西,但我很新。我嘗試將「平均通話時間」字段的格式更改爲「長時間」,但它顯示爲一天中的某個時間,而不是平均時間,或者我看錯了?如何計算Microsoft Access中的平均通話時間

是否有其他人遇到類似的問題,如果是的話,你是如何解決它的?

任何幫助,將不勝感激

謝謝!

+1

「總時間」和「總呼叫」列的數據類型是什麼?您能否提供一些示例記錄和預期輸出?也很高興看到你現在正在做什麼來得到你的答案(如果它接近工作的話) – Brad

+0

總時間是某人在一個給定的月份上花費的時間總數,每個人在這個月中的電話號碼。他們的平均通話時間均爲月度和年度 我認爲我遇到的問題的一部分是我無法輸入17:42:27作爲沒有接入思考的每月總時間我正在輸入5 :42 PM – gkneib

回答

0

如果長時間使用的數據類型的日期記錄,您可以使用查詢:

Select CDate(Avg([TimeSpent])) As TotalTimeSpent 
From YourTable 

您可能必須指定該字段的格式:h:nn

如果你的時間將超過24 ,你將不得不使用一個函數來創建一個HH:NN閱讀:

Public Function FormatHourMinute(_ 
    ByVal datTime As Date, _ 
    Optional ByVal strSeparator As String = ":") _ 
    As String 

' Returns count of days, hours and minutes of datTime 
' converted to hours and minutes as a formatted string 
' with an optional choice of time separator. 
' 
' Example: 
' datTime: #10:03# + #20:01# 
' returns: 30:04 
' 
' 2005-02-05. Cactus Data ApS, CPH. 

    Dim strHour  As String 
    Dim strMinute  As String 
    Dim strHourMinute As String 

    strHour = CStr(Fix(datTime) * 24 + Hour(datTime)) 
    ' Add leading zero to minute count when needed. 
    strMinute = Right("0" & CStr(Minute(datTime)), 2) 
    strHourMinute = strHour & strSeparator & strMinute 

    FormatHourMinute = strHourMinute 

End Function 

,然後調整查詢:

Select FormatHourMinute(CDate(Avg([TimeSpent]))) As TotalTimeSpent 
From YourTable 
+0

如果我把時間轉換成一個字符串,我將無法在計算中使用它,但是正確的? – gkneib

+0

是的,日期/時間字符串僅用於顯示,應避免存儲。 – Gustav

0

訪問中的時間字段旨在存儲時間點 - 而不是持續時間。儘管您可能選擇了「長時間」作爲顯示格式,但訪問仍將其存儲爲特定日期。您可以在長時間格式化日期時間字段時嘗試此操作,在其中輸入一些數據,然後將格式更改爲tt.mm.jjjj hh:nn:ss,它會在1899年12月30日 - 訪問時間的開始日期給您一些時間。

如果您創建了一個查詢,將「long time」類型的時間相加,並將tt.mm.jjjj hh:nn:ss放入格式框中,只要總和超過24小時,它就會顯示更晚的日期。

因此,要處理持續時間,您通常會以數字字段中所需的最小精度(小時,分鐘,秒,幾個世紀)存儲所有內容,並從中計算所有內容。 在表單中輸入數據比直接輸入數據表要容易得多(也更安全),因此您可以使用自動轉換持續時間的時間字段。