C# SQL数据读取器返回错误的日期
我正在开发一个Excel加载项,从SQL Server数据库检索数据并将其插入Excel 在数据库中,我有一个日期C# SQL数据读取器返回错误的日期,c#,sql-server,visual-studio-2010,sqldatareader,C#,Sql Server,Visual Studio 2010,Sqldatareader,我正在开发一个Excel加载项,从SQL Server数据库检索数据并将其插入Excel 在数据库中,我有一个日期2013-06-01(YYYY-MM-DD) 当使用SqlDataReader从数据库中读取时,以下命令: myReader.GetValue(c) 返回06/01/2013(DD-MM-YYYY),然后将其存储在Excel中,以6作为日,1作为月号 你知道会发生什么吗 谢谢这可能是关于本地化的问题。 您可以设置SQL连接和正在使用的系统的本地化,甚至excel中的列规范。 我最好
2013-06-01
(YYYY-MM-DD)
当使用SqlDataReader
从数据库中读取时,以下命令:
myReader.GetValue(c)
返回06/01/2013
(DD-MM-YYYY),然后将其存储在Excel中,以6作为日,1作为月号
你知道会发生什么吗
谢谢这可能是关于本地化的问题。
您可以设置SQL连接和正在使用的系统的本地化,甚至excel中的列规范。
我最好的猜测是检查设置是否正常。此行为似乎是由SQL Server和Microsoft Excel之间的不同本地化配置产生的 如果无法更改此配置,我建议您对用于检索数据的SQL语句使用
CAST()
或CONVERT()
例如:
SELECT CONVERT(DATETIME, Date_Column, 103) AS UsingConvertFrom_DDMMYYYY
FROM TABLE_NAME
使用这种方法(即不是最好的),您将强制DataReader.GetValue的值使用原始值“解析良好”
您可以查看文档以了解更多详细信息。您的SQL Server列的数据类型是什么?它应该是
DATE
或DATETIME
,然后您应该能够使用myReader.GetDateTime(c)
正确读取它,这是DATETIME,myReader.GetDateTime(c)仍然返回错误的值06/01/2013当您将其放入excel时,您能不能将DATETIME重新格式化为字符串:myReader.GetDateTime(c).ToString(“yyyy-MM-dd”);问题是在日期进入excel之前,在DataReader中错误地读取了日期。SQL将日期存储为日期,而不是字符串。