2017-04-06 7 views
1

동일한 테이블의 두 열 합계를 SUM()으로 계산하지만 최종 결과는 정수 (286676)입니다. 밀리 초라고 생각 하나? TIME (00:00:00)으로 전환하려면 어떻게해야합니까?Mysql SUM() TIME 잘못된 형식

데이터베이스

id|hours_worked | hours_worked_wk2 | 
을 hours_worked = 14시 33분 38초 hours_worked_wk2 = 14시 33분 38초

쿼리

SELECT *,SEC_TO_TIME(SUM(TIME_TO_SEC(ep.hours_worked)))+SEC_TO_TIME(SUM(TIME_TO_SEC(ep.hours_worked_wk2))) 
AS TotalHoursWorked 
FROM employeepayroll ep 
JOIN employees em ON ep.employee_id=em.employee_id 
JOIN payroll p ON ep.payroll_id=p.payroll_id 
JOIN payrolltaxes pt ON ep.payroll_id=pt.payroll_id 
WHERE ep.timesheet_status='Approved' AND p.pay_group='26' 
ORDER BY ep.payroll_id DESC 

총 근무 시간 = 286676

답변

2

다음 공식을 사용하십시오.

hours = cast(duration_in_milliseconds \ (60 * 60 * 1000) as int) 
mins = (duration_in_milliseconds \ (60 * 1000)) mod 60 
secs = (duration_in_milliseconds \ 1000) mod 60 

귀하의 질의는 다음과 같이 표시됩니다

select cast(duration_in_milliseconds\(60*60*1000) as int)+':'((duration_in_milliseconds \ (60*1000)) mod 60;)+':'((duration_in_milliseconds \ 1000) mod 60) from something 
+0

잘못된 명령입니다. –

+0

명령 행에서이 문자를 인식하지 못합니다.'\' –

+0

예, 알고 있습니다. 방금 수식을주었습니다. 개인적으로 쿼리에서 편집 할 수 있습니다. – hamzox

0

당신이 그것을 볼 때 ...

14:33:38 >>> 143,338 × 2 = 286,676 

이궁을. 시간의 숫자는 암시 적으로 정수로 변환됩니다.

SEC_TO_TIME(SUM(...))+SEC_TO_TIME(SUM(...))의 두 값을 추가합니다.

대신 SEC_TO_TIME(SUM(...) + SUM(...))을 사용하십시오.