Mysql 用速率乘以小时
我将数据存储在数据库中,如下所示Mysql 用速率乘以小时,mysql,Mysql,我将数据存储在数据库中,如下所示 Hours Rate 02:37:37 8.00 我写了一个如下的查询 select (hours * rate) as pay from user_hours; 我得到的结果是16,这是不正确的 我怎样才能得到正确的结果 谢谢, 拉吉 您得到了正确的结果。我猜您将小时存储为字符串,因此字符串为'02:37:37'。当MySQL在数字上下文中遇到一个字符串(例如用于加法或乘法)时,它会将该字符串转换为一个数字。它采用表示数
Hours Rate
02:37:37 8.00
我写了一个如下的查询
select (hours * rate) as pay from user_hours;
我得到的结果是16,这是不正确的
我怎样才能得到正确的结果
谢谢,
拉吉
您得到了正确的结果。我猜您将小时存储为字符串,因此字符串为'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;
我真的建议将数据存储在时间数据类型或单独的列中,但以下是一个查询:
SELECT
(SUBSTRING(hours,1,2) + SUBSTRING(hours,4,2)/60 + SUBSTRING(hours,7,2)/3600) * rate AS pay
FROM user_hours;
什么数据类型是小时?看起来像时间数据类型。正确的结果是什么?
SELECT
(SUBSTRING(hours,1,2) + SUBSTRING(hours,4,2)/60 + SUBSTRING(hours,7,2)/3600) * rate AS pay
FROM user_hours;