为什么1899-12-30是Access/SQL Server中的零日期而不是12/31?

Pet*_*ell 30 sql-server ms-access

出于好奇心而不是任何真正的问题; 这个问题今天出现了,我知道我已经看到1899-12-30用作Access中的"默认"日期和零日期以及较旧的SQL Server应用程序.只是想知道为什么 - 它来自哪里,为什么不使用1899-12-31?

wkl*_*wkl 45

在当天保持与Lotus 1-2-3的兼容性,这有一个错误,它认为1900年是闰年(或假装?).

解释说的时间太长了,但为了好奇,这里有一些片段.

1900年不是闰年.

"这是Excel中的一个错误!" 我惊呼道.

"嗯,不是真的,"埃德说."我们必须这样做,因为我们需要能够导入Lotus 123工作表."

"那么,它是Lotus 123中的一个错误?"

"是的,但可能是故意的.莲花必须适合640K.这不是很多记忆.如果你忽略了1900,你可以通过查看最右边的两位来判断一年是否是闰年这真是快而轻松.莲花家伙可能认为过去这两个月的方式并不重要.看起来那些基本的家伙想要在这两个月里做个肛门,所以他们感动了有一天回来."

实际上,这个数字比实际天数大一个.这是因为Excel的行为就像1900年2月29日的日期一样.它没.1900年不是闰年(2000年是闰年).在Excel中,1900年2月28日之后的那一天是1900年2月29日.实际上,1900年至2月28日的那一天是1900年3月1日.这不是一个"错误".确实,这是设计上的.Excel以这种方式工作,因为它确实是Lotus 123中的一个错误.当引入Excel时,123几乎拥有电子表格软件的整个市场.微软决定继续使用Lotus的bug,以便完全兼容.从123切换到Excel的用户不必对其数据进行任何更改.只要你的所有日期都晚于1900年3月1日,这应该是无关紧要的.