闰秒的问题
2017-01-04 本文已影响49人
traveller227
闰秒由来
原子钟和平均太阳日之间需要定期同步, 同步的方式就是闰秒.
闰秒有正负之分, 目前为止出现的都是正闰秒.
正闰秒是增加1s, 如(2017-01-01 07:59:59, 2017-01-01 07:59:60, 2017-01-01 08:00:00)
负闰秒是跳过1s, 如(xxxx-xx-xx 07:59:58, xxxx-xx-xx 08:00:00)
PHP
<?
$str = '2017-01-01 07:59:59';
$time = strtotime($str);
var_dump($time); // int(1483228799)
$str = '2017-01-01 07:59:60'; // 闰秒
$time = strtotime($str);
var_dump($time); // int(1483228800)
$str = '2017-01-01 08:00:00';
$time = strtotime($str);
var_dump($time); // int(1483228800)
?>
mysql
mysql5.1.50 -- 插入的59:60的数据会变成00:00
mysql>CREATE TABLE `tmp2` (
`f2` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
mysql>insert into tmp2(f2) values('2017-01-01 07:59:59');
mysql>insert into tmp2(f2) values('2017-01-01 07:59:60');
mysql>insert into tmp2(f2) values('2017-01-01 08:00:00');
mysql>select * from tmp2;
+---------------------+
| f2 |
+---------------------+
| 2017-01-01 07:59:59 |
| 0000-00-00 00:00:00 |
| 2017-01-01 08:00:00 |
+---------------------+
mysql5.5 -- 可以插入59:60, 但是查询不会返回
linux内核
Linux2.6.18-164版本以下, 处理闰秒会挂, 会导致Linux内核Crash, 需要升级内核版本
Ref:
小心程序中的时间(时间调整/闰秒)
http://su1216.iteye.com/blog/1575662
mysql timezone leap seconds
http://dev.mysql.com/doc/refman/5.5/en/time-zone-leap-seconds.html
闰秒背景与数据库处理
https://yq.aliyun.com/articles/68260