我将数据存储在数据库中,如下所示。
Hours Rate
02:37:37 8.00
我写了一个如下的查询
select (hours * rate) as pay from user_hours;
我得到的结果为“16”,这是不正确的。
如何获得正确的结果?
谢谢, 拉吉
答案 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;