问题
将unix时间戳转换为日期时间,同时保留毫秒。
背景
我收到unix时间戳的格式如下:
然后,我试图通过PHP将其发送到MySQL中的一个列,即使用TO_TIMESTAMP()的datetime(3)。我也尝试过FROM_UNIXTIME(),但结果是一样的。
SQL
$sql = "
INSERT INTO assoc_table (timestart, timeend)
VALUES (TO_TIMESTAMP(:timestart), TO_TIMESTAMP(:timeend))
";结果
22:42:23.000
由于某些原因,它不注册毫秒。
期望结果
发布于 2020-03-12 22:04:32
时代时间戳表示自1970年1月1日以来过去的秒数;如果你想要分数秒,它需要一个小数部分.这不是给MySQL的输入的情况,而是反映在您正在获得的结果中。
给定一个带有小数部分的划时代时间戳,from_unixtime()按预期工作:
select from_unixtime(1584049707.123)返回:
2020-03-12 21:48:27.123注意:datetime(3)是存储此类值的相关格式。
发布于 2020-03-12 22:37:57
用php创建一个datetime对象,对时代进行标识,然后格式化它,它应该可以工作:
$epoch = 1584049707;
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s.u');如果您需要对MySQL进行转换,请检查以下文档:https://www.epochconverter.com/programming/mysql
看起来应该是:
DATE_ADD(FROM_UNIXTIME(0), interval -315619200 second),'%Y-%m-%d-%f');在哪里-315619200是你的时代
https://stackoverflow.com/questions/60662325
复制相似问题