【问题标题】:How to convert varchar(10) column to timestamp如何将 varchar(10) 列转换为时间戳
【发布时间】:2018-10-19 04:31:46
【问题描述】:

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

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

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

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

我怎样才能正确地做到这一点而不会丢失任何数据。

timestamp   varchar(10)     utf8_general_ci         No  None    

sampel data:(in varchar) 1246251403 1246251404 1248771150

【问题讨论】:

  • varchar 列中时间戳数据的格式是什么?
  • 你能举个时间戳数据的例子吗?
  • 您不能简单地更改该列的dataType 并使其正常工作。首先,您需要使用timestapm 数据类型创建一个新的column。然后执行更新查询以设置 timestamp 值,使用基于格式的适当函数转换您拥有的字符串值。
  • 添加示例数据

标签: mysql phpmyadmin timestamp laravel-5.2


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 2014-02-22
    • 2020-11-16
    相关资源
    最近更新 更多