2016-06-11 118 views
1

使用R ODBC连接到Access 2016数据库时出现奇怪的问题。访问ODBC返回年份前的不正确日期1753

R中的日期通过引用来自Access数据库的日期而具有-28天的差异。

例如,在Access:1639-01-24;在R:1638-12-27。 R中的日期格式是“1638-12-27 LMT”。

为了解决这个问题,我不得不日期变量作为字符串与Format功能:

Select format([date],'yyyy-mm-dd') ... 

有人可以解释为什么发生这种情况?

+0

难道这是关系到公历?差异太大。最近的日期会发生什么(即20世纪) –

+0

我认为你是对的!我检查了更新的日期,这是正确的。 –

+0

但17世纪和18世纪有错误,但有变化:1686年16天; 6天1732.这很奇怪。 –

回答

2

尽管Access中的Date/Time字段类型被定义为“年份100和9999之间的日期或时间值”(ref),但Access ODBC驱动程序在处理1753年1月1日之前的日期时似乎遇到问题。能够确认在RODBC和.NET System.Data.Odbc下使用Microsoft Access Driver (*.mdb, *.accdb)

1753-01-01的访问是由访问ODBC返回1753-01-01(正确的),但
1752-12-31的访问是由访问ODBC为1752-12-30(错误)

而且,你已经找到返回的差异变得更大我们再往前追溯。

也有试图插入时,涉及与访问ODBC问题Microsoft知识库文章here之前1753

日期很可能不是巧合,1753年1月1日是尽早为SQL Server中的DATETIME列类型。在该日期的意义更多详细信息,请参阅

What is the significance of 1/1/1753 in SQL Server?

只有一个Date/Time在访问类型,所以我们可以将值不能转换为SQL Server中类似DATETIME2。因此,最佳解决方法可能是使用Format()将日期值转换为问题中提到的文本。

还值得一提的是,访问OLEDB提供商(Microsoft.ACE.OLEDB.12.0)没有表现出与日期同样的问题之前,1753

相关问题