sql-server-2008 – 在SQL Server 2008中存储闰秒
这个周末是一个很长的一个,因为在6月30日23:59:59之后会有一个
extra second插入.
我们有一个全天候记录大量数据的系统,其中一个业务规则是,没有两个记录可以记录为同时发生,在一秒钟内. 我们正在使用UTC数据时间以及新的 当然这会造成错误: select datediff(ss,getdate(),'30-jun-2012 23:59:60') 但是根据UTC神,这将是一个实时的.活动可以在23:59:60进行,但是我们无法记录这个事实. 23:59:59加上一秒钟的抵消仍将被视为7月1日00:00:00. 如何正确记录事件发生在23:59:60的数据库? 解决方法您不能,因为SQL从Windows获取时间,Windows也不支持闰秒.Windows通过从上游时间服务器获取新的时间来应用闰秒,并应用通常的调整,就像它是简单的clock drift. 通常这意味着在延长的时间内每秒调整几纳秒.超过24小时,每分钟约一毫秒就会出现. > Windows时间服务如何处理闰秒:http://support.microsoft.com/kb/909614 基本上,大多数应用程序只是假装没有像闰秒这样的东西. 对于大多数目的,这并不重要.如果您有一个这样的应用程序,操作系统将不会帮助您.您还需要一些特殊的硬件跟踪时间,因为操作系统通常无法保持时间到一秒钟内. Windows默认同步每周或更少的时间,最便宜的PC硬件时钟(或甚至昂贵的服务器)可以轻松漂移几秒钟. 由于您确实关心确切的时间,我假设您指向pool.ntp.org或您的区域子网,并且每天设置w32time进行同步多次. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |