You are currently offline, waiting for your internet to reconnect

Support for the leap second

Support for Windows XP has ended

Microsoft ended support for Windows XP on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

Summary
This article contains information about Microsoft support for the leap second.

Note The leap second is a one-second adjustment that's occasionally applied to Coordinated Universal Time (UTC) in order to keep its time of day close to the mean solar time, or UT1.
More information

(1) Windows

About the OS
Leap second processing is not handled separately by the Windows operating system (OS). For example, year, month, date, and time information in the following format is not supported by the Windows OS:

yyyy/mm/dd 08:59:60

Therefore, 2012/7/1 08:59:60 is processed as 2012/7/1 09:00:00, per the ISO 8601 format.

About the Time Synchronization Service (Windows Time Service)
Windows Time Service does not implement a leap second even though it passes through the Leap Indicator (LI) flag from the NTP server to the server that hosts the Windows Time Service and the down-level clients that synchronize from it. The Windows Time Synchronization Service (W32Time) does not insert a leap second, and instead proceeds with the usual time synchronization process.

During the brief period that follows the introduction of a leap second on an upstream NTP server (including W32time Server), a time difference of about one second occurs between that upstream NTP server and the W32time clients that synchronize from it. The W32time clients correct their local clocks when they subsequently synchronize time from their upstream server. 

For more information, see the following Microsoft Knowledge Base (KB) article:

909614 How the Windows Time Service treats a leap second
 
Additionally, in the Windows Time Service, it's not always possible to prevent the occurrence of marginal time differences, such as one second. The operating system is designed to handle time variations. Leap second variations are handled cleanly, allowing for uninterrupted execution. For more information, see the following KB article:

939322 Support boundary to configure the Windows Time service for high-accuracy environments

About the cluster service
As for the cluster configuration, it's same as with the OS: leap second processing is not performed. 

(2) SQL Server 2000, 2005, 2008, 2008 R2, 2012, and 2014

SQL Server does not use time data for managing internal operations such as transactions. Therefore, even if a one-second deviation occurs in the system time because of the leap second, this does not affect SQL Server operations. Just as with the Windows OS, SQL Server does not independently recognize the leap second.

Be aware the date data type (for example, datetime) does not support the format in which the seconds value reaches 60—such as 2012/7/1 08:59:60. Therefore, if a connection is established to SQL Server from an application that's running on an OS that supports the leap second, and the OS tries to set a leap second (data in which the second's value is 60) in the column and variable of the date data type, an error is returned. For more information, see the following "Reference information" section.  

Reference information

[Example] When the leap second is handled as the date data type in the SQL Server

create table leap_second(a int,b datetime,)goinsert into [leap_second] values (1,convert(datetime,'2012/07/01 08:59:60'))goselect convert(datetime,'2012/07/01 08:59:60')goselect datediff(day,convert(datetime,'2012/07/01 08:59:60'),getdate())godeclare @b datetimeset @b='2012/07/01 08:59:60'godeclare @c timeset @c='08:59:60'godeclare @d datetime2set @d='2012/07/01 08:59:60'godeclare @e datetimeoffset set @e='2012/07/01 08:59:60'go

Result
Message 242, Level 16, Status 3, Row 1
As a result of conversion from the varchar data type to the datetime data type, the value is set outside the range.
The statement has ended.

Message 242, Level 16, Status 3, Row 1
As a result of conversion from the varchar data type to the datetime data type, the value is set outside the range.

Message 242, Level 16, Status 3, Row 1
As a result of conversion from the varchar data type to the datetime data type, the value is set outside the range.

Message 242, Level 16, Status 3, Row 3
As a result of conversion from the varchar data type to the datetime data type, the value is set outside the range.

Message 241, Level 16, Status 1, Row 2
The conversion process failed during conversion from the character string to the date and time, or to either of the two.

Message 241, Level 16, Status 1, Row 2
The conversion process failed during conversion from the character string to the date and time, or to either of the two.

Message 241, Level 16, Status 1, Row 2
The conversion process failed during conversion from the character string to the date and time, or to either of the two.

(3)  Exchange Server 2003, 2007, 2010, and 2013

The time that's used in Exchange Server includes the time that's measured by the system clock and the time that's calculated as the elapsed period since the start of the service. In the processing that uses the system clock, the Exchange server operates without recognizing the leap second. On the other hand (where the elapsed time period is concerned), although a difference of one second occurs with the insertion of the leap second, this deviation can occur even under normal circumstances. As with the Windows OS, Exchange Server is designed to handle minor time variations. Therefore, Exchange Server operations are not affected. 

In addition to the internal operation, a schedule in the iCalendar format represents a case in which it's possible to receive (from the outside) a time value to which a leap second has been added. However, when Exchange Server receives schedules in the iCalendar format, the program supports only those formats in which the time notation is defined in compliance with RFC 5545. With regard to the leap second, the seconds notation is supported in the 0–60 range. If a number that's greater than 60 is specified as the seconds value, it is processed as an invalid format and is not recognized as the correct iCalendar format. 

In Outlook, 60 seconds is considered 0. Therefore, 2012/07/01 08:59:60 becomes 2012/07/01 08:59:00. This means that there is a possibility of a one-minute deviation at most. In such a case, the order of reception of emails may appear to have deviated, but otherwise there is no effect on operations. 

For more information, see the following:
 
2.2.36 [RFC5545] Section 3.3.12 Time
http://msdn.microsoft.com/en-us/library/ee624459(v=exchg.80).aspx

(4) Internet Information Services (IIS)

The leap second has no effect in IIS. 

(5) Others

Applications that are running in Windows typically use the system clock. Therefore, they can be used without consideration for the leap second.
However, be aware that if a Microsoft product is accessed from an application that manages the time on its own and that supports the leap second, or from an application that's running on an OS that supports the leap second, problems are likely to occur. This is because Microsoft products do not recognize the leap second. 

Additionally, applications should not rely on the system time to increase monotonically. Instead, they should use the GetTickCount64() function to read the current tick count, which is the time since startup in milliseconds.
Properties

Article ID: 2722715 - Last Review: 08/10/2015 18:45:00 - Revision: 2.0

Microsoft Windows Server 2003, Standard Edition (32-bit x86), Microsoft Windows Server 2003, Standard x64 Edition, Microsoft Windows Server 2003, Enterprise Edition (32-bit x86), Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter Edition (32-bit x86), Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003 R2 Standard Edition (32-bit x86), Microsoft Windows Server 2003 R2 Standard x64 Edition, Microsoft Windows Server 2003 R2 Enterprise x64 Edition, Microsoft Windows Server 2003 R2 Enterprise Edition (32-Bit x86), Microsoft Windows Server 2003 R2 Datacenter x64 Edition, Microsoft Windows Server 2003 Service Pack 1, Microsoft Windows Server 2003 Service Pack 2, Microsoft Windows XP Professional, Microsoft Windows XP Service Pack 1, Microsoft Windows XP Service Pack 2, Microsoft Windows XP Service Pack 3, Windows Server 2008 Standard, Windows Server 2008 Enterprise, Windows Server 2008 Datacenter, Windows Server 2008 Service Pack 2, Windows Vista Home Basic, Windows Vista Home Premium, Windows Vista Business, Windows Vista Enterprise, Windows Vista Ultimate, Windows Vista Service Pack 1, Windows Vista Service Pack 2, Windows Server 2008 R2 Standard, Windows Server 2008 R2 Enterprise, Windows Server 2008 R2 Datacenter, Windows Server 2008 R2 Service Pack 1, Windows 7 Professional, Windows 7 Enterprise, Windows 7 Home Premium, Windows 7 Ultimate, Windows 7 Service Pack 1, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Service Pack 3, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Service Pack 2, Microsoft SQL Server 2005 Service Pack 3, Microsoft SQL Server 2005 Service Pack 4, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Express, Microsoft SQL Server 2008 Service Pack 1, Microsoft SQL Server 2008 Service Pack 2, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Standard, Microsoft SQL Server 2008 R2 Datacenter, Microsoft SQL Server 2008 R2 Developer, Microsoft SQL Server 2008 R2 Enterprise, Microsoft SQL Server 2008 R2 Express, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Express, Microsoft Exchange Server 2003 Standard Edition, Microsoft Exchange Server 2003 Enterprise Edition, Microsoft Exchange Server 2003 Service Pack 1, Microsoft Exchange Server 2003 Service Pack 2, Microsoft Exchange Server 2007 Standard Edition, Microsoft Exchange Server 2007 Enterprise Edition, Microsoft Exchange Server 2007 Service Pack 1, Microsoft Exchange Server 2007 Service Pack 2, Microsoft Exchange Server 2007 Service Pack 3, Microsoft Exchange Server 2010 Standard, Microsoft Exchange Server 2010 Enterprise, Microsoft Exchange Server 2010 Service Pack 1, Microsoft Exchange Server 2010 Service Pack 2, Microsoft SQL Server 2014 Business Intelligence, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Express, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2014 Web, Microsoft Exchange Server 2013 Standard, Microsoft Exchange Server 2013 Service Pack 1, Microsoft Exchange Server 2013 Enterprise

  • KB2722715
Feedback