插入数据库时​​出现日期时间错误

时间:2013-03-25 11:46:19

标签: c# .net winforms datetime

我的数据库中有datetime数据类型的字段。

我正在解析日期如下:

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.

我犯了什么错误?

3 个答案:

答案 0 :(得分: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格式。

答案 1 :(得分: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();

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

答案 2 :(得分: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();