What is the Year 2000 problem and which dates are affected?
This question was answered on June 24, 1999. Much of the information contained herein may have changed since posting.
The Year 2000 issue is not difficult to understand from the technical point of view It is the scope of affected systems and business processes that makes this problem so challenging The problem stems from three main issues: two-digit date storage, leap year calculations, and special meanings for dates The implications of these three issues need to be addressed by all organizations Unfortunately, there will be no simple fix to the year 2000 issue, no "silver bullet," due to the fact that the use of dates for calculations is pervasive throughout software and that usage is not standardized.
Two-digit date storage
The most common and most damaging problem occurs when software has been written to store and/or manipulate dates using only two digits for the year Calculations built upon these dates will not execute properly because they will not see dates in the 21st century as being larger numbers than those in the 20th century Example: 2000 - 1998 = 2 but 00 - 98 = -98 (or 98 if the application does not allow negative numbers) The result of this might be that your accounting software sees all accounts receivable as overdue due to the fact that no customers have paid in 98 years.
The two-digit date convention assumes that the century is "19." This assumption was regarded as a necessity in the early days of commercial computing because of the high cost of computer storage and memory Today, the usage of two-digit dates is perpetuated by the sociological context in which dates are referenced in our daily lives Individuals choose to use two-digit dates due to the fact that the human mind handles dates contextually whereas the computer requires the explicit expression of dates.
Leap year calculations
Leap years are calculated by a simple set of rules Unfortunately, there are systems and applications that do not recognize the year 2000 as a leap year This will cause all dates following February 29, 2000 to be offset incorrectly by one day The rules for leap year calculations are as follows A year is a leap year if it is divisible by four, but if it is divisible by 100 it is NOT a leap year, but if it is divisible by 400 it IS a leap year Thus, the Year 2000 is a special case leap year that happens once every 400 years.
Special meanings for dates
The third main Year 2000 problem is more commonly found in older code bases In order to write more efficient code which allowed for the use of less memory, date fields were sometimes used to provide special functionality The most common date used for this was 9/9/99 In some applications the use of the special date meant "save this data item forever" or "remove this data item automatically after 30 days," or "sort this data item to the top of the report." Within each organization, special date codes may have been used differently This is one of the main reasons that no single tool can locate all uses and/or misuses of date data.
Technically, the problem is simple to understand The solutions to the problem tend to be fairly simple as well The scope of the problem, however, makes it difficult Every piece of hardware, software, and embedded system must be taken into account Everything from mission-critical central accounting systems to small convenience applications must be examined for date-handling and how those dates might affect the rest of the environment
About the author
Posted by Ken Colburn of Data Doctors on June 24, 1999