2

我有一个 MySQL 数据库,它记录了在各种客户端上工作的小时数。它有两张表,一张存储时间,另一张保存我为每个客户收取的不同费率。

我有一个网页,它以表格格式显示数据,显示开始/停止时间、活动、计算时间费率和其他几个信息调用。

小时列是使用哪个工作正常计算的TIME_FORMAT( TIMEDIFF( end_date, start_date ) , '%h %i' ) AS Hours,给我工作的小时/分钟。但是,Amount 列仅显示 Hours * Rate 计算,而不是 Hours&Min*Rate。

我如何包括会议记录?

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

感谢任何帮助,Roddy

4

4 回答 4

3

而不是TIMEDIFF, 使用TIMESTAMPDIFF它会在您指定的度量(秒、小时、年)中为您提供差异。在您的查询中像这样使用它:

SELECT TIMESTAMPDIFF( MINUTE , start_date, end_date ) * ( rate / 60 ) AS billable_amount
FROM  `your_table`
于 2013-04-24T15:21:05.037 回答
2

'%h %i'将产生类似的东西17 15- 那是一个字符串值,而不是可以与另一个数字相乘的东西。

使用TIMESTAMPDIFFwith unitMINUTE代替TIME_FORMAT,或者,如果这不起作用(因为根据文档它需要完整的日期值),TIME_TO_SEC(并除以 60)。

于 2013-04-24T15:17:44.973 回答
0
SELECT TIME(NOW());
+-------------+
| TIME(NOW()) |
+-------------+
| 16:29:13    |
+-------------+

SELECT TIME_TO_SEC(TIME(NOW()))/3600;
+-------------------------------+
| TIME_TO_SEC(TIME(NOW()))/3600 |
+-------------------------------+
|                       16.4875 |
+-------------------------------+
于 2013-04-24T15:28:40.123 回答
0

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

SELECT ROUND(SUM( TIME_TO_SEC('time') * ('hourly_rate')))/60/60 AS 'total_value' FROM 'table' 
于 2018-02-08T23:11:10.790 回答