我的数据库中有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.
我犯了什么错误?
答案 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();