Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用速率乘以小时_Mysql - Fatal编程技术网

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;