2011-04-07 8 views
2

현재 시간을 기준으로 시프트를 시도 중입니다. 나는 출발 시간이 끝나는 시프트 마스터를 가지고있다. 변속 타이밍은 다음과 같습니다.시프트 타이밍 계산 문제

A - 06:00 -- 14:00 
B - 14:00 -- 22:00 
C - 22:00 -- 06:00 

i 현재 시간 기준으로 처음 두 시프트가 발생합니다. 그러나 나는 세 번째 변화를 얻지 못하고있다. 예 : 현재 시간은 01.30 다음 내가

+0

현재 시도가 표시된 일부 SQL을 추가하는 것을 잊었습니다. – Tomalak

답변

1

아웃로 "C"를 받아야하는 경우 당신은 같은 "C"에 대한 또 다른 기록을 추가 할 수 있습니다

C - 22:00 -- 24:00 
C - 00:00 -- 06:00 

는 또한 다소 복잡한 SQL 만들 수 있습니다 :

SELECT shift 
FROM table 
WHERE end > '1:30' 
    AND (
     start <= '1:30' 
     OR 
     start > end 
    ) 
+0

+1 흥미로운 논리 – RichardTheKiwi

1

다음 날로 전달되는 교대조를 처리해야합니다.

where 
curtime() >= starttime and 
curtime() < if(endtime>starttime,endtime,adddate(endtime,interval 1 day))