2000年问题是近来IT产业中的一个热门话题,它由来已久,只是近一年才被人摆到桌面上。2000年问题对计算机应用历史较长的西方发达国家影响很大,但中国也不被幸免,PC机也存在2000年问题,Dos、Windows 95也存在2000年问题。离2000年只有两年700多天,多数企业也会在这两年内建立计算机管理系统,2000年问题应是首要问题。
什么是2000年问题
所谓2000年问题是指计算不能处理或不能正确处理2000年以后的日期,计算机可能会把2000年当作一个非法年份,也可能把2000年当作1900年来处理。前者一般是硬件的问题,
后者则是软件的错误。硬件问题可以咨询硬件生产厂商,升级BOIS即可解决。软件问题则要复杂的多,没有捷径可走。
人们会把‘12/10/97’理解为‘12/10/1997’,计算机也一样,但对‘12/10/00’,人们会理解成‘12/10/2000’,但计算机通常会理解为‘12/10/1900’。计算机不能正确的将两位年转换成四位年,因它没有智能。
2000年问题导致的后果是所有与时间有关的运算都有可能出错,比如银行计算利息,企业记录的应收应付款,人的年龄。很多资料也会由于被认为过期而被删掉。
并不那么简单
计算机真的会把‘00’年当作‘1900’年吗?也未必。用VB
3.0写的程序是这样,用VB 5.0写的程序就会把它解释成‘2000’年。用Delphi写的程序,当系统时间是20世纪时,‘00’被当作‘1900’,当系统时间是21世纪时,‘00’被子当作‘2000’。
其实,计算机只认识0和1,‘12/10/00’也是由0和1组的一串数字,通常由64个0、1组成,‘12/10/00’只是它对用户的显示效果。把‘12/10/00’解释马64个0、1时,就有一个算法控制,微软公司曾用几种方法来对付2000年,第一:把两位年加上1900,所以‘00’就是1900+00=1900,这是一个早期算法;第二:当两位年在00-19时,基数为2000,当两位年在20-99时,基数是1900,即‘01’当作‘2001’,’21‘当作’1921,EXCEL
4、 5以及7就是这样;第三:根据系统时间来确定基数是1900或2000,如VB
4.0及5.0;第四:当两位年在00-29时,基数为2000,当两位年在30-99时,基数为1900,ACCESS
97、 EXCEL 97等多数产品都是这样。
从另一个方面讲,即使用4位年,也不是所有的年份都有效,如Windows
3.XWindows 95认识的最大年份是2099年,NT的最大年份是29601年。日期问题是一个非常复杂题。Windows
95本身也存在一些错误,当系统时间超过2000年后,在资源管理器中新建的文件就会出现日期错误。
好消息
尽管近一年2000年问题才被人们重视,但很多软件公司在成产之初就已经考虑到,如微软公司。虽然其产品有一些错误,但并不致命。
以数据库为中心的应用,数据库都是与2000年相容的,甚至Dbase
3就已经可以和2000年相容.Dbase和Paradox的日期范围是公元前9999年到公元9999年,MS
SQLServer的日期范围是公元1753--9999年,Informix从公元0001年到9999年,Oracle从公元前4712年到公元4712年,Sybase从公元1753年到9999年。
以往日期通常以字符串的方式表达,很容易出错误,如VB
3.0。新版的开发语言如Delphi 、Basic 4.0也增加了日期型数据类型,使语法更加严谨。所以,用最新开发工具开发的应用,只要程序员加以注意,2000年问题还是可以避免的。
SUNY2000对2000年问题的处理
SUNY2000在设计之初考虑到了2000年问题,它可以解决2000年问题。SUNY2000支持多种数据库,在数据层没有2000年问题。SUNY2000中可以录入两位年或四位年,当系统时间在20世纪时,两位年的时间基数是1900年,当系统时间是2000年时,其时间基数是2000年。如果在20世纪录入2000年之后的时间,则应该切换到4位年的录入方式。