2013-07-10 23 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中的列规范设置为。
我最好的猜测是检查设置是否正常。