倍增时间和时间每小时收费分钟

时间:2013-04-24 14:12:02

标签: mysql

我有一个MySQL数据库,记录了各种客户端的工作小时数。它有两个表,一个存储小时数,另一个表包含我为每个客户工作的不同费率。

我有一个网页,以表格格式显示数据,显示开始/停止时间,活动,计算小时费率以及其他几个信息来电。< / p>

小时列使用TIME_FORMAT( TIMEDIFF( end_date, start_date ) , '%h %i' ) AS Hours进行计算,效果很好,为我提供了工作小时/分钟。但是,金额列仅显示小时*费率计算而非小时和最小*费率。

如何包含会议记录?

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

感谢任何帮助,尊重罗迪

4 个答案:

答案 0 :(得分:3)

使用TIMESTAMPDIFF代替TIMEDIFF,它会为您提供指定度量(秒,小时,年)的差异。在查询中使用它:

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

答案 1 :(得分:2)

'%h %i'会产生类似17 15的内容 - 这是字符串值,而不是可以与其他数字相乘的内容。

TIMESTAMPDIFF与单位MINUTE而不是TIME_FORMAT一起使用,或者,如果这不起作用(因为根据文档需要完整日期值),TIME_TO_SEC(除以60)。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果您的总时间值以00:00格式存储,小时费率以00.00格式存储,则可以使用以下查询返回2位小数值;

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