2009-08-13 153 views
0

使用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

回答

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 

我已經打破了爲了便於閱讀的行。

我認爲有可能是在這一行你的計算錯誤:「使用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