Как преобразовать поле даты и времени MySQL в метку времени, используя Ruby? - PullRequest
2 голосов
/ 20 марта 2011

У меня есть два поля:

last_modified : datetime
updated_at    : timestamp

updated_at - это новое поле, которое было только что добавлено в таблицу, last_modified содержит точные даты.

Я хочу иметь возможность циклически проходить по всем строкам таблицы, выбирать дату и время last_modifed, преобразовывать ее в метку времени и сохранять в новом поле updated_at.

Понятия не имею, как это сделать, любая помощь очень ценится!

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

Попробуйте

update table_name set updated_at=unix_timestamp(last_modified);

Не знаю, почему вы хотите хранить одни и те же данные дважды. Хранение одних и тех же данных дважды может привести к несогласованности.

Если вы хотите timestamp в своем коде, вы можете сделать это в самом коде.

0 голосов
/ 20 марта 2011

Если ваша таблица называется 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 в базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...