здравствуйте, в бд использовал до этого момента time() для установления значения времени (к примеру дата добавление новости), возможно ли теперь конвертировать значение полей с временем, в timestamp формат mysql?
В mysql есть подходящая функция FROM_UNIXTIME. Соответственно необходимо:
timestampТ.е. вот так:
mysql> create table migratetest (t int);
Query OK, 0 rows affected (0.07 sec)
mysql> insert into migratetest values (1234567890);
Query OK, 1 row affected (0.04 sec)
mysql> alter table migratetest add column ts timestamp null default null;
Query OK, 1 row affected (0.17 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from migratetest;
+------------+------+
| t | ts |
+------------+------+
| 1234567890 | NULL |
+------------+------+
1 row in set (0.00 sec)
mysql> update migratetest set ts = from_unixtime(t)
where t is not null and ts is null;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from migratetest;
+------------+---------------------+
| t | ts |
+------------+---------------------+
| 1234567890 | 2009-02-14 02:31:30 |
+------------+---------------------+
1 row in set (0.00 sec)
mysql> alter table migratetest drop column t;
Query OK, 1 row affected (0.18 sec)
Records: 1 Duplicates: 0 Warnings: 0
Новое поле затем возможно переименовать в старое, но из-за смены формата у вас и приложение скорей всего изменялось и удобнее как раз оставить использовать с новым именем.
Если время миграции получается довольно большим и необходимо сохранить работоспособность приложения - то процедура несколько изменяется:
before insert и before updateupdate модифицируется чтобы обновлять данные небольшими порциями, например по дополнительному условию id >= 1000 and id < 2000А вот как в mysql добавлять и удалять поля без длительной блокировки таблицы - уже достойно отдельного вопроса
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости