在Ruby Sequel中将所有created_at行更新为10分钟

时间:2018-03-20 18:19:27

标签: mysql ruby sequel

我正在尝试将所有created_at时间戳记放在我的表格中,然后从它开始减少大约10分钟(600秒)。但我似乎无法弄明白。

MyApp::Model::MyTable.select(:created_at).update(:created_at => :created_at - 600)

我从created_at列中选择所有行并对所述行执行更新,以便每行现在为created_at - 600秒(10分钟)。但是,当我尝试这个时,会说incompatible data types in combination

有人可以给我一个更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

我会在数据库中使用SQL命令执行此操作,以避免首先将所有记录加载到内存中:

MyApp::Model::MyTable.update_sql(
  created_at: Sequel.lit('DATE_SUB(created_at, INTERVAL 10 MINUTE)')
)

请参阅DATE_SUB的文档。