访问ODBC返回年份前的不正确日期1753
使用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') ...
有人可以解释为什么发生这种情况?
尽管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
难道这是关系到公历?差异太大。最近的日期会发生什么(即20世纪) –
我认为你是对的!我检查了更新的日期,这是正确的。 –
但17世纪和18世纪有错误,但有变化:1686年16天; 6天1732.这很奇怪。 –