2016-06-11 85 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

相關問題