我有一个带有varchar(10)列的旧数据库表,其中包含时间戳数据。
现在我在该数据库上使用laravel web app。
我需要将varchar(10)列转换为带数据的时间戳。
以前我使用phpmyadmin(在备份副本上)更改列类型,但所有数据都更改为0000000000。
如何在没有任何数据丢失的情况下正确执行此操作。
timestamp varchar(10) utf8_general_ci No None
sampel data:(in varchar)
1246251403
1246251404
1248771150
答案 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 |