我的数据库包含Column' StartDate' as' 01/01/2018 10:00'和' EndDate' as' 01/01/2018 11:25'。我有基于某些标准的多个记录集。
我想计算第二个' StartDate'之间的区别。第一个' EndDate'而不是总结他们所有的差异。
我已将示例数据库放在此处
http://sqlfiddle.com/#!9/2cc5ba
我在想使用查询是不可能的,所以我已经开始使用vba。
使用下面链接中的函数elapsedtime的帮助
https://msdn.microsoft.com/en-us/vba/access-vba/articles/calculate-elapsed-time
我可以将第一行的字符串作为145:30:00"小时:分钟:第二行"
问题编号:1 如何将此字符串更改为日期时间格式。
我尝试过格式化(CDate(Caclute_time)," hh:mm:ss")'但它给了我一个eroor类型不匹配。
问题编号:2
我如何添加时间 例如。 104:40:00(hh:mm:ss)+ 20:21:00(hh:mm:ss)给我的结果为125:01:00
答案 0 :(得分:0)
您应该始终将时间留作日期,直到您要格式化它为止。既然你没有,你就会陷入一团糟。
我们需要2个函数,一个用于将日期转换为hh:mm:ss格式,另一个用于将其强制转换为日期。
Public Function DateToHHMMSS(theDate As Date) As String
DateToHHMMSS = Int(CSng(theDate * 24)) & ":" & Format(theDate, "nn:ss")
End Function
Public Function HHMMSSToDate(theString As String) As Date
Dim dateArr As Variant
dateArr = Split(theString, ":")
If UBound(dateArr) = 2 Then
HHMMSSToDate = TimeSerial(dateArr(0), dateArr(1), dateArr(2))
End If
End Function
使用这些功能,您可以轻松地将这些日期添加到一起,例如:
DateToHHMMSS(HHMMSSToDate("104:40:00") + HHMMSSToDate("20:21:00"))
要将字符串转换为日期,只需使用:
DateToHHMMSS("104:40:00")
答案 1 :(得分:0)
只是总结时差:
Select Sum([DateEnde] - [DateStart])
From MTTR
然后使用如下函数对其进行格式化:
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
*,
Nz((Select Top 1 T.DateStart
From MTTR As T
Where T.LFD_NR > MTTR.LFD_NR
Order By LFD_NR Desc), [DateEnde]) - DateEnde As TimeDiff
From
MTTR
将此保存为MTTR_Diff。
然后:
Select
FormatHourMinute(Sum([TimeDiff))
From
MTTR_Diff