2012-09-27 3 views
1

이 elapsed_time을 사용하는 쿼리가 있는데 제대로 작동하지만 실제로 actual_elapsed 값이 잘못 표시됨을 알게되었습니다. actual_elapsed는 TIMEDIFF()를 사용하여 수행하는 타이머의 실행 시간입니다. log_time은 datetime이고, action (play, pause)이 삽입/생성되었을 때의 datetime입니다. sequence는 int이며 각 사용자에 대해 처음 발생한 일을 알려줍니다. status, int는 수행 한 동작이 play (1), pause (2) 또는 stop (3)인지 여부를 알려줍니다.일시 정지 로직으로 시간이 경과 됨 mysql TIMEDIFF() 및 PHP

마찬가지로 내 문제는 TIMEDIFF (now(), log_time)를 사용하여 actual_elapsed에 대한 올바른 값을 얻고 있다고 말했습니다. 내가 일시 중지 조치를 취하지 않았다면 괜찮 았을 것입니다. 난 단지 49초를 받고되어야 할 때

예 DB 입력

log_time    sequence  status 

2012-09-27 15:31:02  1   1     
2012-09-27 15:31:04  2   2    **2 +** 
2012-09-27 15:40:08  3   1 
2012-09-27 15:40:45  4   2    **39 +** 
2012-09-27 15:40:47  5   1 
2012-09-27 15:40:57  6   3    **10 =** 
                **49** 

내 쿼리는 나에게 09분 57 초 있습니다.

내 견본 쿼리.

(" select sequence_num, elapsed_time, status, TIMEDIFF(now(), log_time) as actual_elapsed from tbl"); 

나는 actual_elapsed의 지속 시간을 가져 오려고합니다. 그렇게하려면 휴식 시간 (일시 중지)의 총 지속 시간을 취한 다음 elapsed_time과 휴식 시간의 차이를 가져야합니다. 하지만 사용자가 타이머를 여러 번 일시 중지 할 수 있기 때문에 그 부분에 문제가 있습니다.

DB를 디자인 할 때 충분히 간단 해 보였습니다. 너무 혼란스러워하지 않고 어떻게이 일을 진행하나요?

A B (WHERE 상태 = 1 TBL로부터 iStart AS SUM (log_time 해당)) 가입 (상태 됨 (2,3) TBL FROM iStop AS SUM (log_time)을 선택) FROM

답변

0

SELECT iStop-iStart;

위의 쿼리는 일시 중지 또는 중지가 마지막 레코드 인 경우에만 작동합니다.

관련 문제