总结 MS Access 中的小时和分钟 - 如何处理庞大的数据集
Posted
技术标签:
【中文标题】总结 MS Access 中的小时和分钟 - 如何处理庞大的数据集【英文标题】:Summing up Hours and Minutes in MS Access - How to deal with huge datasets 【发布时间】:2016-08-29 20:49:53 【问题描述】:所以我在 MS Access 2010 中有一个表格,如下所示:
Date Pers. ID Dauer Tätigkeit
10.04.2016 10 01:15
11.05.2016 5 05:00
...
我想获取“Dauer Tätigkeit”的总小时数。 “Dauer Tätigkeit”中的所有条目均采用日期格式。
下面的公式应该可以完成以“1346:30”之类的格式列出结尾的工作。它实际上为小型数据集完成了工作。
我必须使用的数据集有大约 800 个条目,平均每小时 3 小时。所以我期望在大约 2400 到 8000 小时的范围内得到一个数字,如果我用 23:59 填充每一行,它应该最多给我一个低于 20.000 的数字。 我得到的数字远低于 100 万。
当总小时数小于大约 500 时,错误就会消失(我通过将条目数减半来进行测试,而不是进一步)。所以我认为,我在某处遇到了溢出问题。
现在的问题是在哪里。可能发生这种情况的明显点是刚开始的“Int”,但从公式中删除它并不能解决它。
=Format(Int(Summe([Dauer Tätigkeit]))*24+Stunde(Summe([Dauer Tätigkeit]));"00")
& ":" & Format(Minute(Summe([Dauer Tätigkeit]));"00")
我现在的问题是: 有语法问题吗? 是溢出问题吗? 可以转换为 LongInt 解决它吗?如果是,如何将其实施到公式中? 我问的问题对吗?
【问题讨论】:
是否可以保留一个单独的整数分钟值,然后自己进行计算和格式化?它没有那么复杂,因为它只是总数?即除以 60 得到总小时数。和 mod 60 以获得分钟。 那么我肯定会遇到 int 的溢出问题。我的数据集超过 32,767 分钟 对求和的结果使用 long。或“货币”,但这确实是“过分”。请参阅:w3schools.com/sql/sql_datatypes.asp 了解数据类型。 当总小时数小于大约 500 时错误消失...什么错误?此外,您说该字段是日期时间,因此这些应该是时间值,而不是要聚合的小时/分钟持续时间(即 1:15 AM/PM、5:00 AM/PM)。除非您需要列或行之间的时间差?如前所述,使用数字列数据类型作为持续时间。 【参考方案1】:始终将日期处理为日期,而不是字符串,不长,也不是货币。
这个函数会做:
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
对于您的示例,输出将是:
Result = FormatHourMinute(#23.59# * 800)
' Result -> 19186:40
你的表情将是:
=FormatHourMinute(Summe([Dauer Tätigkeit]))
【讨论】:
以上是关于总结 MS Access 中的小时和分钟 - 如何处理庞大的数据集的主要内容,如果未能解决你的问题,请参考以下文章