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

How to convert varchar(10) column to timestamp

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

现在我正在该数据库上使用 laravel 网络应用程序。

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

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

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

timestamp   varchar(10)     utf8_general_ci         No  None    

sampel data:(in varchar) 1246251403 1246251404 1248771150

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