如何使用Ruby将MySQL datetime字段转换为时间戳?

时间:2011-03-20 05:11:49

标签: mysql ruby datetime

我有两个字段:

last_modified : datetime
updated_at    : timestamp

updated_at是刚刚添加到表中的新字段,last_modified包含准确的日期。

我希望能够循环遍历表中的所有行,选择last_modifed日期时间,将其转换为时间戳并将其保存在新的updated_at字段中。

不知道如何做到这一点,非常感谢任何帮助!

2 个答案:

答案 0 :(得分:2)

尝试

update table_name set updated_at=unix_timestamp(last_modified);

我不是为什么要两次存储相同的数据。两次存储相同的数据可能会导致不一致。

如果您希望代码中有timestamp,则可以在代码本身中执行此操作。

答案 1 :(得分:0)

如果您的表名为some_table,那么您可以将其放入迁移的up类方法中:

execute 'UPDATE some_table SET updated_at = last_modifed'

MySQL应该能够自动从datetime转换为timestamp。在SQL SET子句中,列特定于单个行,SET适用于所有匹配的行;没有WHERE子句,UPDATE适用于表中的所有行。请记住,SQL是基于集合的,所以一切都在行和循环上运行,并不真正适合模型。

我假设您正在使用ActiveRecord,因为您有一个名为updated_at的时间戳。如果你没有使用ActiveRecord,那么你必须找到另一种方法将SQL UPDATE发送到数据库。