什么';在SQL数据库中,将日期时间从C#存储为日期时间的正确格式是什么?

什么';在SQL数据库中,将日期时间从C#存储为日期时间的正确格式是什么?,c#,sql,wpf,visual-studio-2017,C#,Sql,Wpf,Visual Studio 2017,我正在wpf应用程序上使用此查询: "INSERT INTO [Table]([fname],[lname],[cdate]) VALUES(" + @fname + "," + @lname + "," + @DateTime.Now + ")" 但它似乎不起作用,它说:“12”附近的语法不正确。问题一定是在我的DateTime中的某个地方,因为当我将代码转换为以下内容时: "INSERT INTO [Table]([fname],[lname]) VALUES(" + @fname + "

我正在wpf应用程序上使用此查询:

"INSERT INTO [Table]([fname],[lname],[cdate]) VALUES(" + @fname + "," + @lname + "," + @DateTime.Now + ")"
但它似乎不起作用,它说:“12”附近的语法不正确。问题一定是在我的DateTime中的某个地方,因为当我将代码转换为以下内容时:

"INSERT INTO [Table]([fname],[lname]) VALUES(" + @fname + "," + @lname + ")";
查询执行得非常好

如果有人想知道,cdate在SQL中有一个datetime数据类型。

请尝试下面的查询

  "INSERT INTO [Table]([fname],[lname],[cdate]) VALUES('" + @fname + "','" + @lname + "','" + @DateTime.Now.ToString("d") + "')"

Or
  "INSERT INTO [Table]([fname],[lname],[cdate]) VALUES('" + @fname + 

"','" + @lname + "','" + @DateTime.Now + "')"
OR
  "INSERT INTO [Table]([fname],[lname],[cdate]) VALUES('" + @fname + "','" + @lname + "','" + @DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "')"

请检查日期格式,检查您发送的是mm/dd/yy还是dd/mm/yy,以及您的数据库接受的日期格式。

尝试在主脚本之前设置日期时间格式:

SET dateformat ymd
INSERT INTO ...

sgmoore是对的,sql参数的使用成功了,我甚至不必格式化它,我的全部代码是:

using (SqlCommand cmd = new SqlCommand("INSERT INTO [Table]([fname],[lname],[cdate]) VALUES(" + @fname + "," + @lname + ",@mydate)", Conn))
    {
    cmd.Parameters.Add(new SqlParameter("@mydate", DateTime.Now));
    Conn.Open();
    cmd.ExecuteNonQuery();
    Conn.Close();
    } 

这可能是格式错误吗?我已经输出了日期时间。现在,它的格式与SQL中的日期时间不同。我将对格式做一些尝试和错误处理。谢谢,第一个成功了。但是,存储的日期看起来不一样,它显示“1/1/1900 12:00:00 AM”。数据库中的日期格式是什么。?请检查它是否正在存储dd/mm/yy或mm/dd/yy。您需要向数据库传递相同的格式。它有一个日期时间数据类型,该格式的示例是“6/17/1905 12:00:00 AM”。我添加了一个新查询,请尝试使用Sql参数。试想一下,如果您有O'Reilly这样的姓氏会发生什么。您还应该为其他列使用Sql参数。