我有兩個領域:如何使用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