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

我在旧版mysql db上编写了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();
上一篇:Java泛型和泛型类型


下一篇:c-如何创建行为与其他类型相同的类型?