我的数据库中有一个字段用于专家在电话上花费的总时间,另一个用于总通话时间。我试图计算平均通话时间,但Access不会以hh:mm:ss格式返回号码,而无需进行某些编码。尽管我在VBA中编写东西,但我很新。我尝试将“平均通话时间”字段的格式更改为“长时间”,但它显示为一天中的某个时间,而不是平均时间,或者我看错了?如何计算Microsoft Access中的平均通话时间
是否有其他人遇到类似的问题,如果是的话,你是如何解决它的?
任何帮助,将不胜感激
谢谢!
我的数据库中有一个字段用于专家在电话上花费的总时间,另一个用于总通话时间。我试图计算平均通话时间,但Access不会以hh:mm:ss格式返回号码,而无需进行某些编码。尽管我在VBA中编写东西,但我很新。我尝试将“平均通话时间”字段的格式更改为“长时间”,但它显示为一天中的某个时间,而不是平均时间,或者我看错了?如何计算Microsoft Access中的平均通话时间
是否有其他人遇到类似的问题,如果是的话,你是如何解决它的?
任何帮助,将不胜感激
谢谢!
如果长时间使用的数据类型的日期记录,您可以使用查询:
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
访问中的时间字段旨在存储时间点 - 而不是持续时间。尽管您可能选择了“长时间”作为显示格式,但访问仍将其存储为特定日期。您可以在长时间格式化日期时间字段时尝试此操作,在其中输入一些数据,然后将格式更改为tt.mm.jjjj hh:nn:ss
,它会在1899年12月30日 - 访问时间的开始日期给您一些时间。
如果您创建了一个查询,将“long time”类型的时间相加,并将tt.mm.jjjj hh:nn:ss
放入格式框中,只要总和超过24小时,它就会显示更晚的日期。
因此,要处理持续时间,您通常会以数字字段中所需的最小精度(小时,分钟,秒,几个世纪)存储所有内容,并从中计算所有内容。 在表单中输入数据比直接输入数据表要容易得多(也更安全),因此您可以使用自动转换持续时间的时间字段。
“总时间”和“总呼叫”列的数据类型是什么?您能否提供一些示例记录和预期输出?也很高兴看到你现在正在做什么来得到你的答案(如果它接近工作的话) – Brad
总时间是某人在一个给定的月份上花费的时间总数,每个人在这个月中的电话号码。他们的平均通话时间均为月度和年度 我认为我遇到的问题的一部分是我无法输入17:42:27作为没有接入思考的每月总时间我正在输入5 :42 PM – gkneib