场景
给某客户用的POC数据落地在我司的测试环境,有程序拉取数据解析后落地到mysql中,再导出excel给客户,由于数据量不大且是测试环境,故没有开发专门的导出接口,而是Navicat中进行select查询再导出结果集,其中有个"发布时间"、"创建时间"等时间字段都是存的13位时间戳格式,用bigint字段类型存储的,需要将这个13位时间戳转换成"yyyy-MM-dd HH:mm:ss"格式显示。
问题
每次进行select from_unixtime(publish_time,'%Y-%m-%d %h:%i:%s') as publish_time fromzhaoyin_leasing_overseas where ……
得到的publish_time 字段不仅没有按照预期格式转换,而且查询出来的是null值,起初以为是我format的问题,后经过多方求证还是无效。
结论
后来无意中尝试将13位毫秒级别时间戳换成10位的秒级别时间戳,竟然搞定了……
select from_unixtime(publish_time/1000,'%Y-%m-%d %h:%i:%s') as publish_time fromzhaoyin_leasing_overseas where ……
经过测试发现,在mysql5.6.36和mysql5.7.23的版本中,from_unixtime(time,format),time字段都得为10位秒级别的时间戳才可以。