Как преобразовать столбец varchar (10) в метку времени - PullRequest
0 голосов
/ 09 мая 2018

У меня есть старая таблица базы данных с колонкой varchar (10) с данными временной метки.

Теперь я использую веб-приложение laravel в этой базе данных.

Мне нужно преобразовать столбец varchar (10) во временную метку с данными.

Ранее я изменил тип столбца с помощью phpmyadmin (для резервной копии), но все данные были изменены на 0000000000.

Как я могу сделать это правильно, без потери данных.

timestamp   varchar(10)     utf8_general_ci         No  None    

sampel data:(in varchar) 1246251403 1246251404 1248771150

1 Ответ

0 голосов
/ 09 мая 2018

Преобразуйте вашу строку в отметку времени , используя from_unixtime(). Он будет нормально работать на столбце VARCHAR.

Пример:

create table mytable (oldts varchar(10), newts timestamp NULL);

insert into mytable (oldts,newts) values ('1246251403', NULL);
insert into mytable (oldts,newts) values ('1246251404', NULL);
insert into mytable (oldts,newts) values ('1246251404', NULL);

update mytable SET newts = from_unixtime(oldts);

select oldts, newts from mytable;

Результаты:

|      oldts |                newts |
|------------|----------------------|
| 1246251403 | 2009-06-29T04:56:43Z |
| 1246251404 | 2009-06-29T04:56:44Z |
| 1246251404 | 2009-06-29T04:56:44Z |

SQL Fiddle

...