按费率乘以小时数

时间:2014-07-25 01:12:14

标签: mysql

我将数据存储在数据库中,如下所示。

Hours           Rate
02:37:37         8.00

我写了一个如下的查询

select (hours * rate) as pay from user_hours;

我得到的结果为“16”,这是不正确的。

如何获得正确的结果?

谢谢, 拉吉

3 个答案:

答案 0 :(得分:0)

02(your hour value) * 8.00 = 16
2 * 8 = 16

你得到了正确的结果。

答案 1 :(得分:0)

我猜你正在存储"小时"作为字符串,所以字符串是'02:37:37'。当MySQL在数字上下文中遇到字符串(例如用于加法或乘法)时,它会将字符串转换为数字。它采用表示数字的最大前导字符数。在这种情况下,'02'

所以,答案是正确的。

如果您想要进行转换,则需要以下内容:

select ((left(hours, 2) + 0) + (substring(hours, 3, 2) + 0) / 60.0 +
        (right(hours, 2) + 0) / (60.0 * 60.0)
       ) * rate;

答案 2 :(得分:0)

我真的建议将数据存储在时间数据类型或单独的列中,但这是一个为您执行此操作的查询:

SELECT
   (SUBSTRING(hours,1,2) + SUBSTRING(hours,4,2)/60 + SUBSTRING(hours,7,2)/3600) * rate AS pay
FROM user_hours;