正确的访问时间总和
correct sum of hours in access
我在 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 的格式?
我猜你想在文本框中显示总数?正确的表达方式是 =SUM([calculated_field_name]).
类似于@HansUp 的答案,无需 VBA 代码即可完成
Format(24 * Int(SUM(elapsed_time)) + Hour(SUM(elapsed_time)), "0") & ":" & Format(SUM(elapsed_time), "Nn")
正如@Arvo 在他的评论中提到的,这是一个格式问题。 calculated_field 总和的预期结果是 33:50。但是,该总和是一个 Date/Time 值,并且由于小时数大于 24,因此 Date/Time 的天数部分提前 1,其余部分 9:50 显示为时间。显然,您的总数被格式化为仅显示时间部分;不显示日部分。
但是 calculated_field 的实际 Date/Time 值是 #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
请注意函数 returns 一个字符串值,因此您不能直接对其进行进一步的日期运算。
我在 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 的格式?
我猜你想在文本框中显示总数?正确的表达方式是 =SUM([calculated_field_name]).
类似于@HansUp 的答案,无需 VBA 代码即可完成
Format(24 * Int(SUM(elapsed_time)) + Hour(SUM(elapsed_time)), "0") & ":" & Format(SUM(elapsed_time), "Nn")
正如@Arvo 在他的评论中提到的,这是一个格式问题。 calculated_field 总和的预期结果是 33:50。但是,该总和是一个 Date/Time 值,并且由于小时数大于 24,因此 Date/Time 的天数部分提前 1,其余部分 9:50 显示为时间。显然,您的总数被格式化为仅显示时间部分;不显示日部分。
但是 calculated_field 的实际 Date/Time 值是 #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
请注意函数 returns 一个字符串值,因此您不能直接对其进行进一步的日期运算。