【问题标题】:Error when updating date field in sql server using c#使用c#更新sql server中的日期字段时出错
【发布时间】:2013-07-10 11:05:18
【问题描述】:

我正在尝试将日期(仅日期,而不是日期时间)插入 sql 表(数据类型为日期)。

我正在使用从 jquery datepicker 获得的'23/07/2013' 格式。

当我执行以下 sql 时,出现以下错误。

SQL:UPDATE qmsAuditFindings SET FindDate='23/07/2013' WHERE AuditID=37

请指教。

另外值得一提的是,具有确切格式的插入语句可以正常工作。只是没有更新。

【问题讨论】:

  • 您的日期格式不正确,无法插入 sql
  • 你需要将日期从varchar转换为日期使用sql server的转换功能

标签: c# sql jquery-ui-datepicker


【解决方案1】:

从表面上看,这只是一个格式问题 - 但“修复格式”是解决此问题的错误方法;你应该参数化,这样格式化根本不适用。日期没有“格式”,因此它们只是数字。例如,我们应该执行的可能是:

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();
}

或者更简单地使用像“dapper”这样的工具:

DateTime findDate = ...
int auditId = ...
connection.Execute(
    "UPDATE qmsAuditFindings SET FindDate=@findDate WHERE AuditID=@auditId",
    new { findDate, auditId });

【讨论】:

  • 您的方式非常有效,谢谢。为了节省时间,我采用了不安全的方式。
  • @ReidGarwin 我读到“为了节省时间,我故意做了一些可能导致数据丢失的事情” - 但很好:你的系统,你的电话
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 2019-07-14
  • 1970-01-01
相关资源
最近更新 更多