首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在BigInt中将MySQL转换为时间戳

在BigInt中将MySQL转换为时间戳
EN

Stack Overflow用户
提问于 2018-05-17 20:46:25
回答 3查看 9.7K关注 0票数 7

我有一个表,在这个表中,我有一个列,它当前存储一个类型为BigInt的值,我想改变这个列以包含‘时间戳’值。

我怎样才能做到这一点。我试过:

代码语言:javascript
运行
复制
ALTER TABLE t
MODIFY c TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

我得到的是:

代码语言:javascript
运行
复制
#1292 - Incorrect datetime value: '1524120113' for column 'created_temp' at row 1

代码语言:javascript
运行
复制
ALTER TABLE share ADD created_temp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;
UPDATE share SET created_temp = UNIX_TIMESTAMP(created);

我得到的是:#1292 - Incorrect datetime value: '1524120113'

created的内容是使用UNIX_TIMESTAMP()创建的

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-23 00:08:29

您得到了第一个错误,因为DBMS不能动态地转换列。第二个错误来自于这样一个事实,即UNIX_TIMESTAMP()需要一个DATETIMETIMESTAMP字符串而不是整数,所以您应该使用FROM_UNIXTIME()

关于这两个函数之间的区别,UNIX_TIMESTAMP()文档有一个重要的说明:

如果使用UNIX_TIMESTAMP()和FROM_UNIXTIME()在时间戳值和Unix时间戳值之间进行转换,则转换是有损的,因为映射不是双向一对一的。例如,由于本地时区更改的约定,两个UNIX_TIMESTAMP()可以将两个时间戳值映射到相同的Unix时间戳值。FROM_UNIXTIME()将该值映射回原始时间戳值中的一个。

--

下面是执行任务所需的步骤(,它可能需要很长时间才能完成,因为所有行都必须重写!):

  1. 向数据库中添加一个新列: ALTER添加new_column时间戳NULL;-- PS:您可能希望在这里使用默认值而不是NULL。
  2. 转换旧值并用它们填充新列: 更新mytable集new_column = FROM_UNIXTIME( old_column ),其中old_column不是NULL;
  3. 删除旧栏: 更改表mytable删除列old_column;
  4. 将新列重命名为旧名称: 修改表mytable更改new_column old_column;
票数 8
EN

Stack Overflow用户

发布于 2019-12-02 13:38:51

例如,假设您有时间戳1376750476349,并且希望将它转换为日期时间。如果时间戳在seconds中,您可以简单地执行以下操作。

代码语言:javascript
运行
复制
select FROM_UNIXTIME(timestamp_value);

但是,对于上述函数的许多用户来说,这是一个反复出现的问题,如果您的时间戳是用milliseconds表示的,那么在使用该函数之前,您必须执行所需的第二次转换。因此,在时间戳以毫秒为单位的情况下,您可以执行以下操作以获得日期时间:

代码语言:javascript
运行
复制
select FROM_UNIXTIME(timestamp_value/1000);

希望这能有所帮助。享受吧!

来源

票数 9
EN

Stack Overflow用户

发布于 2018-05-17 21:09:25

您需要作为一个多步骤操作来执行此操作:

  • 向数据库中添加一个新列。
  • 用转换的值填充它。
  • 删除旧列。

我强烈建议优先使用DATETIME而不是TIMESTAMP,因为TIMESTAMP列只工作到2038年,然后爆炸。

UNIX_TIMESTAMP()不引用TIMESTAMP列,尽管它们是切分相关的,因为TIMESTAMP类型是time_t类型UNIX“时间戳”值的包装器,因此是2038年限额

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50400259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档