Rails - MySQL 错误 "Out of range value" 即使范围应该没问题?
Rails - MySQL errors "Out of range value" even though the range should be ok?
这是我的专栏:
t.decimal "update_timezone_offset", precision: 10, scale: 6
这是我要保存的值:
-14400
我得到这个错误:
Mysql2::Error: Out of range value for column 'update_timezone_offset' at row 1:
我也试了variable_with_the_amount.to_f
,结果还是一样
我忽略了什么?
A DECIMAL(10,6)
允许小数点前 4 位,小数点后 6 位,共 10 位,但 14,400 需要 5 位。您需要 DECIMAL(11,6)
或 DECIMAL(10,5)
来处理该值。
如果您要处理时区偏移,DECIMAL(10,2)
如果以小时为单位,则应该绰绰有余。如果以秒为单位,您根本不需要任何小数位。
此外,请记住,时区偏差在一年中变化很大,并非固定不变,在许多情况下甚至无法预测。政客的心血来潮随时可以改变。
DECIMAL(10,6)
表示10位,包括小数点后6位。即+/-9999.999999为极限。
如果那应该是分钟,那么你有 10 天;这就是你想要的吗?
对于秒,86400 是一天,所以 DECIMAL(11,6)
可能就是您想要的。
这是我的专栏:
t.decimal "update_timezone_offset", precision: 10, scale: 6
这是我要保存的值:
-14400
我得到这个错误:
Mysql2::Error: Out of range value for column 'update_timezone_offset' at row 1:
我也试了variable_with_the_amount.to_f
,结果还是一样
我忽略了什么?
A DECIMAL(10,6)
允许小数点前 4 位,小数点后 6 位,共 10 位,但 14,400 需要 5 位。您需要 DECIMAL(11,6)
或 DECIMAL(10,5)
来处理该值。
如果您要处理时区偏移,DECIMAL(10,2)
如果以小时为单位,则应该绰绰有余。如果以秒为单位,您根本不需要任何小数位。
此外,请记住,时区偏差在一年中变化很大,并非固定不变,在许多情况下甚至无法预测。政客的心血来潮随时可以改变。
DECIMAL(10,6)
表示10位,包括小数点后6位。即+/-9999.999999为极限。
如果那应该是分钟,那么你有 10 天;这就是你想要的吗?
对于秒,86400 是一天,所以 DECIMAL(11,6)
可能就是您想要的。