问题描述:
公司数据库为MySQL,其中数据表(operation_log)的create_time字段用于存储创建时间,类型为bigint,现有两种格式的数据,老数据格式为:20180727101010,新数据格式是我们日常所见的时间戳,导致程序需要特殊处理,所以就想将老数据统一成时间戳。
解决思路:
首先要确定2个问题:
1、哪些数据需要更新?
create_time的值大于当前时间的毫秒值的数据都需要更新。因为老数据的值的长度为14位,时间戳的值为13位。
2、老数据如何转换为时间戳?
涉及到MySQL中的函数。DATE_FORMAT及UNIX_TIMESTAMP函数。
DATE_FORMAT函数作用为格式化时间;
UNIX_TIMESTAMP函数作用为日期时间转化为秒值。
功能实现:
UPDATE operation_log SET create_time = UNIX_TIMESTAMP(DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s')) * 1000 WHERE create_time > UNIX_TIMESTAMP() * 1000;