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,你一切都会好的。