我正在使用Excel添加,从SQL Server数据库检索数据并将其插入到Excel中。SQL数据读取器返回错误日期
在我有约会2013-06-01
(YYYY-MM-DD)
使用SqlDataReader
从数据库读取数据时,下面的命令的数据库:
myReader.GetValue(c)
返回06/01/2013
(DD-MM-YYYY ),然后在Excel中存储时,以6为日期,1为月份编号
任何想法可能会发生什么?
谢谢
我正在使用Excel添加,从SQL Server数据库检索数据并将其插入到Excel中。SQL数据读取器返回错误日期
在我有约会2013-06-01
(YYYY-MM-DD)
使用SqlDataReader
从数据库读取数据时,下面的命令的数据库:
myReader.GetValue(c)
返回06/01/2013
(DD-MM-YYYY ),然后在Excel中存储时,以6为日期,1为月份编号
任何想法可能会发生什么?
谢谢
此行为似乎是由SQL Server和Microsoft Excel之间的不同本地化配置产生的。
如果您无法更改此配置,我建议您使用CAST()
或CONVERT()
作为您用于检索数据的SQL语句。
在例如:
SELECT CONVERT(DATETIME, Date_Column, 103) AS UsingConvertFrom_DDMMYYYY
FROM TABLE_NAME
使用此方法(即不是最好的),你是迫使DataReader.GetValue的价值使用原始值“以及解析”。
您可以查看MSDN文档了解更多详情。
这可能是一个关于本地化的问题。
您既可以将本地化设置为SQL连接以及您正在使用的系统,甚至可以将excel中的列规范设置为。
我最好的猜测是检查设置是否正常。
什么**数据类型**是您的SQL Server列?它应该是'DATE'或'DATETIME',然后你应该能够正确地使用'myReader.GetDateTime(c)' –
来阅读它的日期时间,myReader.GetDateTime(c)仍然返回错误的值06/01/2013 – Karl
当你把它放入excel中时,你能不能把datetime重新格式化为一个字符串:myReader.GetDateTime(c).ToString(“yyyy-MM-dd”); – BaconSah