Rails - MySQL错误“超出范围值”即使范围应该没问题?

时间:2016-04-13 22:11:52

标签: mysql ruby-on-rails ruby decimal

这是我的专栏:

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,但结果是一样的。

我在俯瞰什么?

2 个答案:

答案 0 :(得分:3)

DECIMAL(10,6)允许小数点前4位,后6位,总共10位,但14,400需要5.您需要DECIMAL(11,6)DECIMAL(10,5)才能处理该值

如果你正在处理时区偏移,DECIMAL(10,2)应该足够多,如果这是几个小时。如果在几秒钟内你根本不需要任何小数位。

此外,请记住,时区偏移在一年中变化很大,并且不是固定的东西,在许多情况下甚至是不可预测的。政治家的一时兴起可以随时改变它们。

答案 1 :(得分:1)

DECIMAL(10,6)表示小数点后10位,包括 6。也就是说,+ / - 9999.999999是限制。

如果那应该是分钟,那么你有10天;那是你想要的吗?

对于秒,86400是一天,所以DECIMAL(11,6)可能是你想要的。