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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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# c中从字符串到日期时间的日期解析#_C#_Sql Server_Datetime - Fatal编程技术网

C# c中从字符串到日期时间的日期解析#

C# c中从字符串到日期时间的日期解析#,c#,sql-server,datetime,C#,Sql Server,Datetime,我正在将日期值(“2016年11月24日”)从excel文件导出到C#NET中的SQL数据库表。我在函数中使用以下代码来解析从字符串到日期时间的日期值。但它不起作用。我试图调试它,但当它出现在那一行,它的终止。谁都知道问题出在哪里 var date = row["Date"].ToString(); DateTime dates; string format = "MM-dd-yyyy"; if (!DateTime.TryParseExact(date, format, Cultu

我正在将日期值(“2016年11月24日”)从excel文件导出到C#NET中的SQL数据库表。我在函数中使用以下代码来解析从字符串到日期时间的日期值。但它不起作用。我试图调试它,但当它出现在那一行,它的终止。谁都知道问题出在哪里

var date = row["Date"].ToString();

DateTime dates;    
string format = "MM-dd-yyyy";

if (!DateTime.TryParseExact(date, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dates))
{ 
  continue;
}                           
else
{
   dates = DateTime.Parse(date); //terminating at this line
}

您的格式应该是
dd-MM-yyyy
因为您的日期是
2016年11月24日
as-date,您可以在这篇MSDN文章中了解有关字符串格式的更多信息

改变

根据OP的注释编辑-在SQL server中存储格式化日期

DateTime以标准格式存储在SQL server中,该格式实际上不是我们看到的“dd-MM-yyy”格式。本文解释了内部SQLServer格式

摘自

那么SQLServer如何在内部存储日期呢?它使用8个字节来 存储日期时间值,第一个4表示日期,第二个4表示日期 时间。SQL Server可以将这两组4字节解释为整数。 对于日期部分,SQL Server存储的值是 基准日期1900年1月1日之前或之后的天。因此 存储协议,SQL Server假定日期为1900年1月1日 我在第一个例子中没有提供日期。SQL Server内部 存储的值为0。负数表示早于的日期 1900年1月1日

SQL Server将该时间的第二个整数存储为 午夜过后时钟滴答作响。一秒钟包含300个刻度,所以一个刻度 等于3.3毫秒(ms)。您可以查看天和的值 通过将日期时间值转换为二进制(8)值和 使用substring函数提取每组4个字节。代码 在图3中,将每组4个字节转换为一个整数


最后,我使用了以下代码:

字符串格式=“日/月/年”

如果(!DateTime.TryParseExact(日期、格式、CultureInfo.InvariantCulture、DateTimeStyles.None、过期))

{继续;}

否则

{dates=DateTime.ParseExact(日期、格式、CultureInfo.InvariantCulture);}

字符串datetime=dates.ToString(“yyyy-MM-dd”)


感谢大家。

感谢投票人:看一看建议的代码,问题中的代码是相同的,应该是
string format=“dd-MM-yyyy”
,@Adil:现在编辑后就完美了。。谢谢你纠正我的格式。但问题在于将字符串值解析为Datetime。为什么不转换为日期时间。我将日期值存储到excel文件中,如“24/11/2016”,我必须将其存储到sql数据库表中,如“2016-11-24”。@un lucky,我已经建议dd MM yyyy,您所指的语句不建议更正,尽管它看起来像。不管怎样,谢谢你让我澄清了这个模棱两可的问题!SQL server的日期存储与您正在尝试的表示格式无关,即dd-MM-yyyy,请参阅本文,了解datetime的内部格式。你可以先格式化它,然后再在GUI上演示。我很好奇为什么有两个解析命令?如果TryParse失败了,你认为解析为什么会成功?谢谢你纠正我。但实际问题在于将字符串值解析为Datetime。
string format = "MM-dd-yyyy";
string format = "dd-MM-yyyy";