C# 使用c更新sql server中的日期字段时出错#
我试图在sql表中插入一个日期(仅日期,而不是日期时间)(数据类型为date) 我使用的是从jquery datepicker获得的C# 使用c更新sql server中的日期字段时出错#,c#,sql,jquery-ui-datepicker,C#,Sql,Jquery Ui Datepicker,我试图在sql表中插入一个日期(仅日期,而不是日期时间)(数据类型为date) 我使用的是从jquery datepicker获得的'23/07/2013'格式 当我执行以下sql时,我得到以下错误 SQL:更新qmsauditfinddate='23/07/2013',其中auditd=37 请告知 另外值得一提的是,具有精确格式的insert语句工作得很好。只是更新没有 从表面上看,这只是一个格式问题,但“修正格式”是解决这个问题的错误方法;您应该参数化,这样格式就不适用了。日期本身没有“格
'23/07/2013'
格式
当我执行以下sql时,我得到以下错误
SQL:更新qmsauditfinddate='23/07/2013',其中auditd=37
请告知
另外值得一提的是,具有精确格式的insert语句工作得很好。只是更新没有
从表面上看,这只是一个格式问题,但“修正格式”是解决这个问题的错误方法;您应该参数化,这样格式就不适用了。日期本身没有“格式”,它们只是数字。例如,我们可能应该执行的是:
UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId
为此,请在.NET代码中获取DateTime
值,然后执行以下操作:
DateTime findDate = ...
int auditId = ...
using(var cmd = connection.CreateCommand()) {
cmd.CommandText =
"UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId";
cmd.Parameters.AddWithValue("findDate", findDate);
cmd.Parameters.AddWithValue("auditId", auditId);
cmd.ExecuteNonQuery();
}
或者更简单地使用“整洁”之类的工具:
您的日期格式不正确,无法插入到sql中。您需要将日期从varchar转换为date。请使用sql Server的转换功能。您的方式工作得很好,谢谢。为了节省时间,我采用了不安全的方式。@ReidGarwin我将其理解为“为了节省时间,我故意做了一些可能导致数据丢失的事情”——但很好:你的系统,你的呼叫
DateTime findDate = ...
int auditId = ...
connection.Execute(
"UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId",
new { findDate, auditId });