使用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小时,剩余时间列为超时时间列。
需要查询帮助
答案 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