【问题标题】:Sql server and Excel float to date offsetSql server 和 Excel 浮动到日期偏移
【发布时间】:2014-11-21 15:41:34
【问题描述】:

我正在使用 sql server 和 excel 上的日期和浮点数转换。

这是我的查询:

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

我明白了:

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

如果我将此浮点数复制到 Excel 并将单元格类型更改为日期,我会得到此值:

19-nov-2014

那是什么?为什么有两天的节日?

【问题讨论】:

标签: sql-server excel datetime type-conversion


【解决方案1】:

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

Excel 计算出类似的数字,但零日期是“00/01/1900”。这可能与 excel 使用基于 1 的索引而不是更常见的基于 0 的索引这一事实有关。第二天的差异来自well known bug,据此 excel 认为 1900 年是闰年。

外卖信息:如果您假设 excel 总是落后两天,您会没事的,除了 1900 年 2 月 28 日或之前的日期。

【讨论】:

  • 所以你是说不能将excel中的日期正确导入SQL Server,有什么解决办法吗?
  • 解决方法已发布。为 1900 年之后的日期添加两天,为 1900 年之前的日期添加一天(如果有的话)。我不知道有更清洁的修复方法。
猜你喜欢
  • 2011-07-20
  • 2015-03-07
  • 1970-01-01
  • 2018-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
相关资源
最近更新 更多