正确的访问时间总和

时间:2015-01-27 01:01:05

标签: datetime ms-access sum

我在Access 2010数据库中有两个列,其中包含一些计算字段:

time_from time_until calculated_field(time_until-time_from)
10:45      15:00         4:15
13:15      16:00         2:45
11:10      16:00         4:50
08:00      15:00         7:00
08:00      23:00        15:00

现在到目前为止,这很好:计算领域完成了它的工作,告诉我总小时和分钟...... 现在,我需要一个计算字段的总和.... 我输入了一个表达式构建器:= Sum([time_until] - [time_from]) 我想总和应该给我33:50 ......但它给了我9:50。为什么会这样?有办法解决这个问题吗?

更新: 当我这样说的时候:

=Format(Sum([vrijeme_do]-[vrijeme_od])*24)

我得到一个小数点数...我认为这是正确的.... 例如,25小时和30分钟显示为25,5

但是,如何将这个25,5格式化为25:30?

3 个答案:

答案 0 :(得分:2)

与@HansUp的答案类似,可以在没有VBA代码的情况下完成

Format(24 * Int(SUM(elapsed_time)) + Hour(SUM(elapsed_time)), "0") & ":" & Format(SUM(elapsed_time), "Nn")

答案 1 :(得分:2)

正如@Arvo在评论中提到的,这是一个格式化问题。 calculated_field 之和的预期结果是 33:50 。但是,该总和是日期/时间值,并且由于小时数大于24,因此日期/时间的日期部分提前1,余数 9:50 显示为时间。显然,您的总数被格式化为仅显示时间部分;不显示日期部分。

但是 calculated_field 之和的实际日期/时间值是#12/31/1899 09:50#。您可以使用自定义函数以所需格式显示该值:

? duration_hhnn(#12/31/1899 09:50#)
33:50

这是功能:

Public Function duration_hhnn(ByVal pInput As Date) As String
    Dim lngDays As Long
    Dim lngMinutes As Long
    Dim lngHours As Long
    Dim strReturn As String

    lngDays = Int(pInput)
    lngHours = Hour(pInput)
    lngMinutes = Minute(pInput)

    lngHours = lngHours + (lngDays * 24)
    strReturn = lngHours & ":" & Format(lngMinutes, "00")
    duration_hhnn = strReturn
End Function

请注意,该函数返回一个字符串值,因此您无法直接对其进行日期算术运算。

答案 2 :(得分:0)

我猜你是想在文本框中显示总数?正确的表达式为=SUM([calculated_field_name]).