(Y耳朵2000旧的硬件和软件不能识别2000年以后的日期。他们不能这样做的原因是,在许多数据库中,年份只有两位数;例如,12-11-03而不是12-11-1903。那么,在世纪之交之后,这个日期是1903年还是2003年?每个处理日期的程序都可能有问题。
金融交易经常将数据库记录中的日期与今天或未来的日期相匹配。如果系统没有正确处理日期,账单无法支付,通知无法触发,行动无法采取。在2000年以后,任何不能识别变化的系统都会导致处理未来日期的应用程序输出错误。虽然灾难的警告占了上风,但当一切都说了和做了之后,只发生了几起事故。
解决这个“千年漏洞”的方案需要升级硬件以支持四位数的年份,将文件和数据库转换为四位数的年份,并转换所有引用日期的软件。企业有大量的遗留数据文件和数千个访问它们的程序。对于许多较老的应用程序,编写它们的程序员早就不在了,缺乏文档。在许多情况下,源代码都丢失了。即使可以进行更改,测试更改所花费的时间对it人员来说也是繁重的。
这个问题起源于20世纪初的打孔卡。为了将整个订单或客户记录塞进一个有80或90个字符列的穿孔卡片中,年份被缩短为两位数。为什么要浪费两列写"19"明明"19"会持续很长一段时间。当打孔卡系统在20世纪60年代被转换成磁带时,有足够的空间转换成四位数字,懒惰盛行,因为2000年似乎仍然很遥远。在穿孔卡中保存两列(两个字节)是合适的,但在磁带上有足够的存储空间时就不合适了。
例如,假设一家公司想要删除在过去五年内没有购买过任何东西的客户。程序逻辑将在上一个订单的年份上加上5,并将结果与当前年份进行比较。假设客户上一次订货是在1995年,而当年是1996年。在非y2k兼容的系统中,将5加到95,结果是00,而不是2000。因为96大于00,所以客户记录将被删除。看到数据老化。
由于Unix系统中存储日期的方式,2038年提出了另一个挑战2038年问题).