2013-04-24 27 views
2

我有一个MySQL数据库,它记录了在不同客户端上工作的小时数。它有两个表格,一个存储小时数,另一个存放我为每个客户工作收取的不同费率。乘以小时和分钟的小时数

我有呈现出启动/停止时间提交格式的数据的网页,活动,计算小时和一对夫妇的其他信息调用。

小时列使用TIME_FORMAT(TIMEDIFF(end_date, start_date) , '%h %i') AS Hours计算,它工作正常,给我工作时间/分钟。然而,金额列仅显示小时*费率计算而非小时数&最小*费率。

如何包含会议记录?

TIME_FORMAT(TIMEDIFF(end_date, start_date) , '%h %i') * rate ...是我现在用来计算总金额,但正如我所说的分钟值被忽略。

得到任何帮助,对于罗迪

+0

当然,你想要的小时数(基数为10)而不是“分钟”本身!?!?!? – Strawberry 2013-04-24 15:20:41

回答

3

而不是TIMEDIFF,使用TIMESTAMPDIFF它给你指定的度量(秒,小时,年)的差异。使用这样的查询:

SELECT TIMESTAMPDIFF(MINUTE , start_date, end_date) * (rate/60) AS billable_amount 
FROM `your_table` 
2

'%h %i'会导致类似17 15 - 这是一个字符串价值,而不是东西,可以用另一个数相乘。

使用TIMESTAMPDIFF与单位MINUTE代替TIME_FORMAT,或者,如果不工作(因为根据文档需要完整的日期值),TIME_TO_SEC(除以60)。

+0

在混凝土中制作,假设费率为小时:TIMESTAMPDIFF(MINUTE,start_date,end_date)*(rate/60) – 2013-04-24 15:22:10

+0

TIMESTAMPDIFF完成工作 - THANKYOU – 2013-04-24 20:31:58

0
SELECT TIME(NOW()); 
+-------------+ 
| TIME(NOW()) | 
+-------------+ 
| 16:29:13 | 
+-------------+ 

SELECT TIME_TO_SEC(TIME(NOW()))/3600; 
+-------------------------------+ 
| TIME_TO_SEC(TIME(NOW()))/3600 | 
+-------------------------------+ 
|      16.4875 | 
+-------------------------------+ 
0

如果你的总时间值存储在格式00:00格式00.00可以使用下面的查询与2位小数返回值时薪;

SELECT ROUND(SUM(TIME_TO_SEC('time') * ('hourly_rate')))/60/60 AS 'total_value' FROM 'table'