SSIS包插入';1899年12月31日&x27;而不是';1900年1月1日';这是提供的

SSIS包插入';1899年12月31日&x27;而不是';1900年1月1日';这是提供的,ssis,Ssis,SSIS包插入的是“12/31/1899”,而不是excel表中提供的“1/1/1900”…为什么要改为另一个日期?这导致下游表格中出现smalldatetime问题。这是因为Lotus 1-2-3,这是侏罗纪时期流行的电子表格程序莲花编码错误,1900年是闰年。当然,这并不是因为这是一个完整的世纪,但这一小小的错误被烙印了 当微软推出Excel时,他们想从Lotus窃取市场份额,所以他们故意将同样的错误构建到Excel中,这样人们就可以将旧的1-2-3电子表格移植到崭新的微软产品上 所以Exc

SSIS包插入的是“12/31/1899”,而不是excel表中提供的“1/1/1900”…为什么要改为另一个日期?这导致下游表格中出现smalldatetime问题。

这是因为
Lotus 1-2-3
,这是侏罗纪时期流行的电子表格程序<代码>莲花编码错误,1900年是闰年。当然,这并不是因为这是一个完整的世纪,但这一小小的错误被烙印了

当微软推出
Excel
时,他们想从
Lotus
窃取市场份额,所以他们故意将同样的错误构建到
Excel
中,这样人们就可以将旧的
1-2-3
电子表格移植到崭新的微软产品上

所以Excel内部表示为
0
的日期实际上不是1900年1月1日。为了解释1900年2月29日不存在的数据,它被关闭了一个,在导入之后,转换显示在您的SQL表中,截止到1899年12月31日

我最喜欢的是有人故意这么做

幸运的是,通过选择
Advanced
选项中的选项,您可以将Excel工作簿更改为按预期对日期进行编码。不过,链接中有更多关于这方面的细节

在您的情况下,您必须决定是修复电子表格还是在SSIS中对其进行编码