2012-11-23 2 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 

는 다음 표에서와 같이 동일한 사용자에 대한 datetime의 2 개 가지 세트를 캡처 할 수있는 경우 궁금 해서요. 그 이유는 여러 번 교대 근무를하는 동안 언제든지 출입 할 수있는 계약자의 출석을 관리하는 데 데이터가 사용되기 때문입니다. 즉, 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 
2  2012-10-30 1:00:00.000  NULL 
3  2012-10-30 2:00:00.000  NULL 

에게 주어집니다 각 직원 시계로

UID  ClockIn     ClockOut 
------------------------------------------- 
1  2012-10-30 12: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는 직원에 대한 그 시계를
  • 편집 펀치를 펀치 아웃하는 것을 잊지 때 처리하기위한 프로세스의 어떤 종류를 가질 수
  • 또는 늦었 어.
  • 당신은 각 행의에 대한 ClockOutDATEDIFFClockIn을하고, 그 결과
  • 이 예에서

, 데이터의 유효성을 검사에 대한 책임의 가장 것를 합산하여 각 직원 근무 총 시간을 확인할 수 있습니다 나중에 귀하의 신청서에서 열립니다.누군가를 여러 번 돌보고 싶지 않거나, 아직 실제로 구멍을 뚫지 않은 경우에 시계를 울리려고합니다.