如何将varchar(10)列转换为时间戳

时间:2018-05-09 06:33:38

标签: mysql phpmyadmin timestamp laravel-5.2

我有一个带有varchar(10)列的旧数据库表,其中包含时间戳数据。

现在我在该数据库上使用laravel web app。

我需要将varchar(10)列转换为带数据的时间戳。

以前我使用phpmyadmin(在备份副本上)更改列类型,但所有数据都更改为0000000000。

如何在没有任何数据丢失的情况下正确执行此操作。

timestamp   varchar(10)     utf8_general_ci         No  None    

sampel data:(in varchar) 1246251403 1246251404 1248771150

1 个答案:

答案 0 :(得分:1)

使用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