Rails控制台:用调整后的值更新列值

时间:2018-10-22 09:48:34

标签: sql ruby-on-rails ruby postgresql

我有一些记录的列值数据不正确

:content => "1899-12-31T05:24:00+00:00"
:content => "1899-12-31T03:25:00+00:00"
:content => "1899-12-31T01:12:00+00:00"

我需要修剪前部和后部并更新数据以使外观像这样

:content => "05:24"
:content => "03:25"
:content => "01:12"

这可以通过修整前部 1899-12-31T 和后部:00 + 00:00

来实现

请注意,“内容”是 string 类型列

我尝试了以下查询,但没有执行任何操作

Option.where("content like '1899-12-31T%'").update_all("content = SUBSTRING(content, 1,LENGTH(content) - 6)")

任何帮助/建议将不胜感激。

1 个答案:

答案 0 :(得分:2)

数据类型是字符串吗?因为它看起来像日期时间(如果它是字符串,并且在所有记录中长度都相同),则可以使用类似的方法

Option.each do |option|
 option.update(content: option.content[11..15])
end