在MySQL中有没有将十进制转换为时间的方法?
我使用十进制数据类型在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中有没有将十进制转换为时间的方法?,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数据类型,但我无法更改数据类型 那么,有没有什么方法可
谢谢我在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中有预定义的函数吗?或者怎么办?