首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中用毫秒将unix时间戳转换为日期时间

在MySQL中用毫秒将unix时间戳转换为日期时间
EN

Stack Overflow用户
提问于 2020-03-12 21:54:15
回答 2查看 5K关注 0票数 1

问题

将unix时间戳转换为日期时间,同时保留毫秒。

背景

我收到unix时间戳的格式如下:

  • 1584049707

然后,我试图通过PHP将其发送到MySQL中的一个列,即使用TO_TIMESTAMP()datetime(3)。我也尝试过FROM_UNIXTIME(),但结果是一样的。

SQL

代码语言:javascript
复制
$sql = "
  INSERT INTO assoc_table (timestart, timeend) 
  VALUES (TO_TIMESTAMP(:timestart), TO_TIMESTAMP(:timeend))
";

结果

22:42:23.000

  • 2020-03-12

由于某些原因,它不注册毫秒。

期望结果

  • 从unix时间戳中获取毫秒并进入datetime列.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-12 22:04:32

时代时间戳表示自1970年1月1日以来过去的秒数;如果你想要分数秒,它需要一个小数部分.这不是给MySQL的输入的情况,而是反映在您正在获得的结果中。

给定一个带有小数部分的划时代时间戳,from_unixtime()按预期工作:

代码语言:javascript
复制
select from_unixtime(1584049707.123)

返回:

代码语言:javascript
复制
2020-03-12 21:48:27.123

注意:datetime(3)是存储此类值的相关格式。

票数 3
EN

Stack Overflow用户

发布于 2020-03-12 22:37:57

用php创建一个datetime对象,对时代进行标识,然后格式化它,它应该可以工作:

代码语言:javascript
复制
$epoch = 1584049707;
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s.u');

如果您需要对MySQL进行转换,请检查以下文档:https://www.epochconverter.com/programming/mysql

看起来应该是:

代码语言:javascript
复制
DATE_ADD(FROM_UNIXTIME(0), interval -315619200 second),'%Y-%m-%d-%f');

在哪里-315619200是你的时代

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

https://stackoverflow.com/questions/60662325

复制
相关文章

相似问题

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