如何计算时间?

时间:2009-08-13 13:13:53

标签: ms-access

使用Access 2003数据库

EmpID Intime Outtime

001   090020   180000
002   060000   220000
003   030040   231020

所以......,

InTime和Outime列数据类型为Text。

090000 - hhmmss

这里我要计算时间,如090000到180000是办公时间,剩余时间是超时工作时间。

预期产出

EmpID Intime Outtime WorkedTime OverdutyTime

001    090020 180000   080040
002    060000 220000   090000       070000
003    030040 231020   090000       101040

所以......,

它应该只显示工作时间列中的9小时,剩余时间列为超时时间列。

需要查询帮助

1 个答案:

答案 0 :(得分:1)

在我看来,你需要:

SELECT Format(IIf(CLng(OutTime) > 180000, CDate("18:00:00"), 
       CDate(Format(OutTime, "00:00:00"))) - IIf(CLng(InTime) < 90000, 
       CDate("09:00:00"), CDate(Format(InTime, "00:00:00"))), "hh:nn:ss") 
       As WorkedTime, 
       Format(IIf(CLng(InTime) < 90000, CDate("09:00:00") - 
       CDate(Format(InTime, "00:00:00")), 0) + IIf(CLng(OutTime) > 180000, 
       CDate(Format(OutTime, "00:00:00")) - CDate("18:00:00"), 0), "hh:nn:ss") 
       As OverdutyTime
FROM Table

为了便于阅读,我打破了界线。

我认为您的计算中可能存在错误:

003    030040 231020   090000       101040