这个需求可以分别使用datediff函数求出两个时间的小时差、分差和秒差,然后将它们拼接起来,但是因为需要实现HH:MM:SS格式,表达式会变得非常冗长,例如:
Me.Text6 = IIf(DateDiff("h", #11/12/2013 12:30:05 PM#, #11/12/2013 3:30:45 PM#) < 10, 0 & DateDiff("h", #11/12/2013 12:30:05 PM#, #11/12/2013 3:30:45 PM#), DateDiff("h", #11/12/2013 12:30:05 PM#, #11/12/2013 3:30:45 PM#)) & ";" & Right(((DateDiff("n", #11/12/2013 12:30:05 PM#, #11/12/2013 3:30:45 PM#) Mod 60) + 100), 2) & ":" & Right(((DateDiff("s", #11/12/2013 12:30:05 PM#, #11/12/2013 3:30:45 PM#) Mod 3600) + 100), 2)
可见其可读性非常差,需要反复多次输入两个时间,可以说基本不具使用价值。
为了提高易用性建议采用编写自定义函数方式解决。
于数据库视图选择“模块”对象 点击“新建”命令打开模块VBE编辑器,将下列代码复制黏贴上去
Option Compare Database
Public Function getTimeDiffHhMmSs(time1 As Date, time2 As Date) As String
Dim Ss As Long, H As Long, M As Byte, S As Byte
Ss = Abs(DateDiff("s", time1, time2))
H = Ss \ 3600
M = (Ss Mod 3600) \ 60
S = Ss Mod 60
getTimeDiffHhMmSs = IIf(H < 10, Right(H + 100, 2), H) & ":" & IIf(M < 10, Right(M + 100, 2), M) & ":" & IIf(S < 10, Right(S + 100, 2), S)
End Function
然后保存
跟着就可以在数据库的任何地方使用这个自定义函数了,非常方便。
例如:
getTimeDiffHhMmSs(#2013-11-11 13:40:10#, #2013-11-11 15:45:18#) 返回 02:05:08
getTimeDiffHhMmSs(Now(),#2013-11-11 17:45:18#) 返回 55:53:09
getTimeDiffHhMmSs(Date(),Now()) 返回 09:59:46 (今天凌晨零时到现在为止已经过去的时间)
温馨提示:答案为网友推荐,仅供参考