0

我的数据库中有日期时间数据类型的字段。

我正在解析日期如下:

DateTime dt = DateTime.ParseExact(fileDate, "dd/MM/yyyy",
                                  CultureInfo.InvariantCulture);

在将其插入数据库时​​,我正在执行以下操作:

cmd= new SqlCommand("insert into closingStock values('" + subLine[1].ToString() +
     "','" + subLine[2].ToString() + "','" + DateTime.Parse(subLine[3]) + "','" +
     subLine[10].ToString() + "','" + dt + "')", con);
cmd.ExecuteNonQuery();

它给了我以下错误:

String was not recognized as valid datetime.

我犯了什么错误?

4

3 回答 3

5

您可以尝试使用DateTime.TryParseExact

string strDate = "25/03/2013";           
DateTime datDate;
DateTime.TryParseExact(strDate , new string[] { "dd/MM/yyyy" },
                       System.Globalization.CultureInfo.InvariantCulture,
                       System.Globalization.DateTimeStyles.None, out datDate);
Console.WriteLine(datDate);

编辑 1 我认为你得到的异常是因为DateTime.Parse(subLine[3]),检查DateTime格式。

于 2013-03-25T11:49:27.493 回答
2

我多次遇到此错误,我使用字符串作为日期时间字段:

string myDate= DateTime.Now.Year.ToString() + "-" + DateTime.Now.Month.ToString()
   + "-" + DateTime.Now.Day.ToString() + " " + DateTime.Now.Hour.ToString() 
   + ":" + DateTime.Now.Minute.ToString() + ":" + DateTime.Now.Second.ToString() 
   + "." + DateTime.Now.Millisecond.ToString();

然后我在我的表中插入这个字符串,它工作正常!

于 2013-03-25T11:53:04.693 回答
0

您应该使用参数化查询。这样您就不必担心查询的格式是否正确,只需将其设为正确的 DateTime。

鉴于您正确解析的 DateTime (根据 Arshad 的回答):

DateTime dt;
DateTime subline3Date;
//...
cmd = new SqlCommand("insert into closingStock values(?,?,?,?,?)", con);
cmd.Parameters.Add(subLine[1]);
cmd.Parameters.Add(subLine[2]);
cmd.Parameters.Add(subline3Date);
cmd.Parameters.Add(subLine[10]);
cmd.Parameters.Add(dt);
cmd.ExecuteNonQuery();
于 2013-03-26T02:55:40.997 回答