2015-01-07 3 views
0

PHP로 작성해야하는 직원 지불에 대한 시간 차이 시간당 요금이 필요한 보고서가 있습니다. 예를 들어MySQL 쿼리를 사용하는 PHP의 시간 계산

:이 내가 어떤 제안 ... PHP에서 어떻게해야 할 수있는 쉬운 방법이 아닌 경우

Employee  Clock-In   Clock-Out  Total-Hours Rate Salary 
Mike 2015-01-01 22:57:09 2015-01-02 11:48:14 12:51:05 10 128.51 
Mike 2015-01-03 11:48:51 2015-01-06 22:19:27 82:30:36 10 825.10 
Mike 2015-01-06 21:19:40 2015-01-06 22:00:00 00:40:20 10 6.72 

내 쿼리가

SELECT tt.id,ts.fname,tt.punch_in,tt.punch_out, 
SEC_TO_TIME(TIMESTAMPDIFF(SECOND,tt.punch_in,tt.punch_out)) as working_hours_new,ter.hourlyrate, 
((SUBSTRING(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,tt.punch_in,tt.punch_out)),1,2) + SUBSTRING(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,tt.punch_in,tt.punch_out)),4,2)/60 + SUBSTRING(SEC_TO_TIME(TIMESTAMPDIFF(SECOND,tt.punch_in,tt.punch_out)),7,2)/3600) * ter.hourlyrate) as pay 
from tbl_times as tt left join tbl_server as ts on ts.serverid = tt.user_id left join tbl_employee_rates as ter on ter.userid=tt.user_id 
where ts.locationid = ? and ts.active = 1 and ter.stauts = 1 and date(punch_in) >= ? and date(punch_out) <= ? 

이하?

답변

0

왜 시도 : (가정 MySQL의)

((UNIX_TIMESTAMP(tt.punch_out) - UNIX_TIMESTAMP(tt.punch_in))/3600) * ter.hourlyrate AS salary 
0

각 프로그래밍 언어 또는 시스템은 적절한 방식으로 일정량의 활동을 수행하는 한편 다른 활동에는 적당하지 않도록 설계되었습니다.

SQL은 designed to handle a set of certain activities입니다.

당신의 임무는 당신이 특별히 프로그래밍 언어 또는 더 적절한 방법에 그것을 할 수 있도록 설계 있는 시스템을 찾을 수 없다면, SQL을 사용하여 작업을 완료해야하는 집합의 부분 집합 인 경우. 당신은 확실히 SQL 함께 일을해야 - 그래서 당신이 에 의존하고 귀하의 경우에는

는 SQL이 speficially 처리하도록 설계 등, 필터링 데이터를, 결합한다.

함수, 패키지 또는 뷰에서 코드를 래핑하여 모든 시스템에서 쿼리를 재사용 할 수 있습니다.