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

lnxxn5zx  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(552)

我有一个带有varchar(10)列和时间戳数据的旧数据库表。
现在我正在那个数据库上使用laravelweb应用程序。
我需要将varchar(10)列转换为带有数据的时间戳。
以前我使用phpmyadmin(在备份副本上)更改了列类型,但所有数据都更改为0000000000。
我怎样才能做到这一点,没有任何数据丢失。

timestamp   varchar(10)     utf8_general_ci         No  None
``` `sampel data:(in varchar) 1246251403 1246251404 1248771150` 
h5qlskok

h5qlskok1#

使用将字符串转换为时间戳 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小提琴

相关问题