2012-11-23 37 views
1

我有一張表格以下列格式捕獲最小/最大時間。沒有班次時間表的分段班次

1  2012-10-30 12:13:07.000  2012-10-30 15:18:50.000 
2  2012-10-30 16:13:07.000  2012-10-30 21:18:50.000 

我想知道是否可以捕捉到2個不同的組datetime像下表中的相同用戶。這樣做的原因是,數據用於管理可以隨時進出多個班次的承包商的出勤率。即UID 1可以在12:00時鐘輸入,在15:00時鐘輸出並在稍後返回,並在18:00再次輸出並在21:00輸出,並且它們不適用於時間表或班次時間表。

uid clock       clock     Status 
1  2012-10-30 12:00:00.000  2012-10-30 15:00:00.000 regular 
1  2012-10-30 18:00:00.000  2012-10-30 21:00:00.000 Split 
2  2012-10-30 16:13:07.000  2012-10-30 21:18:50.000 regular 

任何建議將不勝感激。

回答

0

不知道你的應用程序的細節太多了,我會說你最好的方式來組織你的數據是讓你的表的每個記錄對應每個員工的一個「衝入/衝出」。從那裏,計算每個員工在特定時間段內的工作時間將是非常微不足道的。我沒有弄錯,這聽起來很像你如何描述你的第二個例子中的數據(減去Status列)。

在最簡單的例子,你的表將有以下欄目:

UID (INT or uniqueidentifier) 
ClockIn (datetime) 
ClockOut (datetime) 

當員工主頻,你會插入一行到表中針對該員工,並把時鐘的時間下ClockIn欄。

UID  ClockIn     ClockOut 
------------------------------------------- 
1  2012-10-30 12:00:00.000 NULL 

作中,他們將分別獲得一個排

UID  ClockIn     ClockOut 
------------------------------------------- 
1  2012-10-30 12:00:00.000 NULL 
2  2012-10-30 1:00:00.000  NULL 
3  2012-10-30 2:00:00.000  NULL 

每個員工時鐘當員工鍾了,你的應用程序應該檢索該員工的現有記錄,並UPDATE行通過設置ClockOut列到時鐘輸出時間。

UID  ClockIn     ClockOut 
------------------------------------------- 
1  2012-10-30 12:00:00.000 NULL 
2  2012-10-30 1:00:00.000  2012-10-30 3:30:00.000 
3  2012-10-30 2:00:00.000  NULL 

如果僱員時鐘出來,再後來返回,他們將給予就像他們那一天早些時候打卡的新紀錄。

UID  ClockIn     ClockOut 
------------------------------------------- 
1  2012-10-30 12:00:00.000 NULL 
2  2012-10-30 1:00:00.000  2012-10-30 3:30:00.000 
3  2012-10-30 2:00:00.000  NULL 
2  2012-10-30 4:30:00.000  NULL 

希望,在這一點上,你應該能夠看到這個簡單的數據模型,如何有足夠的靈活性,允許大部分的標準時間保持功能。

  • 您可以確定ClockOut爲NULL誰是尋找行主頻在
  • 你可以有某種形式的處理過程時empoyees忘記衝出來
  • 編輯拳員工是時鐘或晚了。
  • 你可以做的ClockOut的每一行的一個DATEDIFFClockIn,結果

在這個例子中,大部分用於驗證數據的責任會求和確定每個員工的總工作小時稍後在您的應用程序中發生。你不會希望有人多次打鐘,或者如果他們還沒有實際打出時間,可以嘗試打鐘。