Sql服务器和Excel浮动到date偏移量

我正在与SQL Server和Excel的date和浮点转换。

这是我的查询:

select getdate(),convert(float, getdate()) 

我得到:

 2014-11-21 16:38:49.973 41962,6936339506 

如果我复制这个浮点数到Excel,我改变单元格types为date,我得到这个值:

 19-nov-2014 

那是什么? 为什么有两天呢?

SQL服务器简单地计算date时间到浮点数的转换,因为自1900年1月1日午夜以来的天数(即select convert(DATETIME, 0)给出1900-01-01 00:00:00.000

Excel计算出一个相似的数字,但是零date是“00/01/1900”。 这可能与Excel使用基于索引的索引相关,而不是更常见的基于零的索引。 差异的第二天来自一个众所周知的错误 ,即Excel认为1900年是一个闰年。

外卖消息:如果你认为excel总是落后两天,那么除了1900年2月28日或之前的date,你一切都会好的。