我不知道为什么你让事情变得如此复杂。只需除以1000即可得到秒数而不是微秒,并从1970-01-01减去。
mysql > select '1970-01-01' + interval -866138400000/1000 second;
+---------------------------------------------------+
| '1970-01-01' + interval -866138400000/1000 second |
+---------------------------------------------------+
| 1942-07-22 06:00:00 |
+---------------------------------------------------+
1 row in set (0.00 sec)
所以您的查询实际上是当然这样的:
select '1970-01-01' + interval your_column/1000 second from your_table;
这个查询证明,你的假设,这将是1942年7月21日是错误的。 1942-07-22是正确的。
mysql > select timestampdiff(second, '1942-07-21', '1970-01-01');
+---------------------------------------------------+
| timestampdiff(second, '1942-07-21', '1970-01-01') |
+---------------------------------------------------+
| 866246400 |
+---------------------------------------------------+
所以价值自1970年以来仍保存为微秒,1970年之前负值意味着仅仅写下来,因为它花了我一秒才明白 – RealCheeseLord