如果超过24小时,Mysql“Time”类型在Rails中给出“ArgumentError:参数超出范围”

我正在一个遗留的mysql数据库上编写一个rails应用程序,它也提供了一个PHP生产工具。 由于这种设置,我无法更改数据库结构。

我遇到的问题是两个表有一个“时间”属性(持续时间),只要时间低于24:00:00 rails处理这个,但是一旦rails遇到类似39:00:34的东西我得到这个“ArgumentError:参数超出范围”。

我已经研究过这个问题并看到rails如何处理时间类型,从我的理解中它将它视为日期时间,因此值为39:00:34会抛出此错误。

我需要一些映射/或更改类型转换的方法,所以我不会得到这个错误。 将值读取为字符串也可以。

任何想法将是最受欢迎的。 干杯

我不熟悉Rails所以可以有一个干净的原生解决方案,但如果所有其他方法都失败了,一个解决方法可能是写入VARCHAR字段,然后运行第二个查询将其复制到mySQL中的TIME字段:

INSERT INTO tablename (name, stringfield) VALUES ("My Record", "999:02:02"); UPDATE tablename SET datefield = CAST(stringfield as TIME) WHERE id = LAST_INSERT_ID();