Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL数据读取器返回错误的日期_C#_Sql Server_Visual Studio 2010_Sqldatareader - Fatal编程技术网

C# SQL数据读取器返回错误的日期

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中的列规范。 我最好

我正在开发一个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中的列规范。

我最好的猜测是检查设置是否正常。

此行为似乎是由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将日期存储为日期,而不是字符串。