我有两个领域:如何使用Ruby将MySQL日期时间字段转换为时间戳?
last_modified : datetime
updated_at : timestamp
的updated_at是刚刚被添加到表中的一个新领域,LAST_MODIFIED包含准确的日期。
我希望能够遍历所有的表中的行,选择last_modifed日期时间,将其转换成时间戳并将其保存在新的updated_at领域。
不知道如何做到这一点,任何帮助深表感谢!
我有两个领域:如何使用Ruby将MySQL日期时间字段转换为时间戳?
last_modified : datetime
updated_at : timestamp
的updated_at是刚刚被添加到表中的一个新领域,LAST_MODIFIED包含准确的日期。
我希望能够遍历所有的表中的行,选择last_modifed日期时间,将其转换成时间戳并将其保存在新的updated_at领域。
不知道如何做到这一点,任何帮助深表感谢!
尝试
update table_name set updated_at=unix_timestamp(last_modified);
我不知道为什么你要存储相同的数据的两倍。两次存储相同的数据可能会导致不一致。
如果你想在你的代码timestamp
,你能做到这一点的代码本身。
如果你的表称为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发送到数据库。
虽然这听起来像一个合适的答案 - 怎么样的考虑时区?如果last_modified中的数据没有隐式存储为UTC,该怎么办? – TJChambers 2012-12-18 17:11:40
unix_timestamp从1月1日0000 UTC返回秒。即使你的机器的时区与UTC不同,上面的功能也会适应这一点。 – Zimbabao 2012-12-19 16:22:00