2013-07-10 50 views
2

我正在使用Excel添加,從SQL Server數據庫檢索數據並將其插入到Excel中。SQL數據讀取器返回錯誤日期

在我有約會2013-06-01(YYYY-MM-DD)

使用SqlDataReader從數據庫讀取數據時,下面的命令的數據庫:

myReader.GetValue(c) 

返回06/01/2013(DD-MM-YYYY ),然後在Excel中存儲時,以6爲日期,1爲月份編號

任何想法可能會發生什麼?

謝謝

+1

什麼**數據類型**是您的SQL Server列?它應該是'DATE'或'DATETIME',然後你應該能夠正確地使用'myReader.GetDateTime(c)' –

+0

來閱讀它的日期時間,myReader.GetDateTime(c)仍然返回錯誤的值06/01/2013 – Karl

+0

當你把它放入excel中時,你能不能把datetime重新格式化爲一個字符串:myReader.GetDateTime(c).ToString(「yyyy-MM-dd」); – BaconSah

回答

0

此行爲似乎是由SQL Server和Microsoft Excel之間的不同本地化配置產生的。

如果您無法更改此配置,我建議您使用CAST()CONVERT()作爲您用於檢索數據的SQL語句。

在例如:

SELECT CONVERT(DATETIME, Date_Column, 103) AS UsingConvertFrom_DDMMYYYY 
FROM TABLE_NAME 

使用此方法(即不是最好的),你是迫使DataReader.GetValue的價值使用原始值「以及解析」。

您可以查看MSDN文檔瞭解更多詳情。

+1

問題出在excel之前,它的日期讀錯的DataReader中 – Karl

+0

SQL將日期存儲爲日期而不是字符串。 – jwg

2

這可能是一個關於本地化的問題。
您既可以將本地化設置爲SQL連接以及您正在使用的系統,甚至可以將excel中的列規範設置爲。
我最好的猜測是檢查設置是否正常。