总结MS Access中的小时和分钟 - 如何处理庞大的数据集

时间:2016-08-29 20:49:54

标签: sql datetime ms-access ms-access-2010

所以我在MS Access 2010中有一个表,如下所示:

Date           Pers. ID      Dauer Tätigkeit

10.04.2016     10            01:15
11.05.2016     5             05:00
...

我想得到“DauerTätigkeit”的总时数。 “DauerTä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演员解决吗?如果是,如何将其实施到公式中? 我问的是正确的问题吗?

1 个答案:

答案 0 :(得分:0)

始终将日期视为日期,而不是字符串,不长,也不是货币。

此功能可以:

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]))