Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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_Date_Typeconverter - Fatal编程技术网

在MySQL中有没有将十进制转换为时间的方法?

在MySQL中有没有将十进制转换为时间的方法?,mysql,date,typeconverter,Mysql,Date,Typeconverter,我使用十进制数据类型在MySQL中创建了一个名为“hours_-spend”的字段来存储时间。值的存储方式如下:1.30、2.30等。。。(1小时30分钟,2小时30分钟) 我想计算各种时间值的总和 时间的总和不是我期望的:1.30+2.30=3.60,而我期望的是4.00 我在MySQL中使用了SUM函数来计算花费在字段中的小时数。如果值为0.30+1.50=1.80,而我预期为2.20 我的第一个错误是使用decimal类型而不是time数据类型,但我无法更改数据类型 那么,有没有什么方法可

我使用十进制数据类型在MySQL中创建了一个名为“hours_-spend”的字段来存储时间。值的存储方式如下:1.30、2.30等。。。(1小时30分钟,2小时30分钟)

我想计算各种时间值的总和

时间的总和不是我期望的:1.30+2.30=3.60,而我期望的是4.00

我在MySQL中使用了SUM函数来计算花费在字段中的小时数。如果值为0.30+1.50=1.80,而我预期为2.20

我的第一个错误是使用decimal类型而不是time数据类型,但我无法更改数据类型

那么,有没有什么方法可以将时间值相加,得到我期望的结果呢


谢谢

我在sqlfiddle为您准备了一个演示,如果您愿意,您可以在那里尝试:

以下是查询示例:

select @indexer:=instr(dateasdecimal, '.')
, left(dateasdecimal, @indexer-1) * 60 + substr(dateasdecimal, @indexer+1)  as totalMinutes
from testtable;

select @indexer:=instr(dateasdecimal, '.')
, sum(left(dateasdecimal, @indexer-1) * 60 + substr(dateasdecimal, @indexer+1))  as totalMinutes
from testtable;
注意:请不要忘记接受您的问题的答案:

要将十进制转换为秒,可以使用以下方法:

truncate(hours_spent,0)*60+(hours_spent-truncate(hours_spent,0))*100
然后你就可以很容易地做算术了。然后,您可以使用以下命令将秒转换回十进制格式:

truncate(seconds/60,0)+truncate(mod(seconds, 60)/100,2)

您始终可以将小数转换为字符串,转换为时间,然后使用time_to_sec对该时间求和,并使用sec_to_time生成格式化的时间。当然,最好以不同的方式存储这些时间,即使它涉及到转换整个数据集

SELECT sec_to_time(sum(time_to_sec(goodTime))) FROM (   
    SELECT CAST(badTime AS TIME) AS goodTime FROM ( 
        SELECT REPLACE(badTime, '.', ':') AS badTime FROM (
            SELECT CAST(badTime AS dec(4,2)) AS badTime FROM (
                SELECT 1.3 AS badTime 
                UNION select 2.3 
            ) z
        ) y
    ) x
) w

好问题!我知道如何使用PHP实现这一点,但要明确的是,您希望这些计算直接在mysql中完成吗?我很想听到答案。你可能需要为同样的问题编写一个自定义代码。好的。我从mysql中获取数据,并使用PHP进行操作。PHP中有预定义的函数吗?或者怎么办?