如何计算时间?

问题描述:

使用Access 2003数据库如何计算时间?

EmpID Intime Outtime 

001 090020 180000 
002 060000 220000 
003 030040 231020 

...等,

银泰和Outime列数据类型是文本。

090000 - hhmmss 

在这里我要计算像09万18万的时候是上班时间,剩余时间在上班时间。

期望输出

EmpID Intime Outtime WorkedTime OverdutyTime 

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

...等,

它应该显示仅9中任职时间列小时,剩下来overduty时间列。

需要查询帮助

+0

你的意思是 – 2009-08-14 01:28:31

在我看来,你需要:

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 

我已经打破了为了便于阅读的行。

我认为有可能是在这一行你的计算错误:“使用Jet数据库”

003 030040 231020 090000  101040 
+0

@Remou - 但在计算中,有一个错误。 EmpID,银泰,Outtime,WorkedTime,OverdutyTime - > 1180 08:36:28 08:37:23 00:22:37 00:23:32 - 这里工作时间显示错误。它应该显示00:00:00。 1240 08:58:09 08:58:09 00:01:51 00:01:51 - 此处Worktime显示错误。它应该显示00:00:00。 1202 19:04:00 19:04:00 \t 01:04:00 01:04:00 - 此处Worktime显示错误。它应该显示00:00:00。请你可以检查这个错误。 – Gopal 2009-08-16 08:59:30

+0

@Remou - 如果Emp在18:00:00之前09:00:00之后冲刺,则工作时间正确。如果雇员在下午9:00之前09:00:00之前工作时间显示错误。如何解决这个错误。 – Gopal 2009-08-16 09:00:06