【问题标题】:Operand type clash: int is incompatible with date when I am trying to update my database操作数类型冲突:当我尝试更新数据库时,int 与日期不兼容
【发布时间】:2019-06-15 04:07:54
【问题描述】:

我正在运行此查询以更新表中的日期时间列:

DateTime today = DateTime.Today;
string[] queries = new string[] { "UPDATE *** SET ExpirationDate = " + today.ToString("yyyy/MM/dd"),
"UPDATE *** SET WrittenDate = " + today.ToString("yyyy/MM/dd"),
"UPDATE *** SET SystemDate = " + today.ToString("yyyy/MM/dd"),
"UPDATE *** SET SystemDate = " + today.ToString("yyyy/MM/dd"),
"UPDATE *** SET EventDate = " + today.ToString("yyyy/MM/dd")};

此格式基于我在此线程中找到的内容: Operand type clash: int is incompatible with date + The INSERT statement conflicted with the FOREIGN KEY constraint

但它不起作用。我知道它们是日期时间字段,因为我可以成功地对它们执行 DATEADD。我只想将这些列中的所有记录设置为当前日期,但即使尝试了所有不同的方法,我仍然会收到相同的错误。提前感谢您的帮助!

【问题讨论】:

  • 您需要用单引号将日期字符串括起来。但是,执行此操作的“正确”方法是利用参数化查询。

标签: c# sql sql-update


【解决方案1】:

SQL中的DATE值必须用单引号'

我正在运行此查询以更新表中的日期时间列:

DateTime today = DateTime.Today;
string[] queries = new string[] { "UPDATE *** SET ExpirationDate = '" + today.ToString("yyyy/MM/dd") + "'",
"UPDATE *** SET WrittenDate = '" + today.ToString("yyyy/MM/dd") + "'",
"UPDATE *** SET SystemDate = '" + today.ToString("yyyy/MM/dd") + "'",
"UPDATE *** SET SystemDate = '" + today.ToString("yyyy/MM/dd") + "'",
"UPDATE *** SET EventDate = '" + today.ToString("yyyy/MM/dd") + "'"};

我不确定“yyyy/MM/dd”,我想你应该把它放在“yyyyMMdd”。

【讨论】:

  • 好吧,它停止抛出错误,所以非常感谢你!但是现在即使它执行非查询,数据库中的日期也不会改变(对我来说是 yyyy/MM/dd)
  • 添加 CURRENT_TIMESTAMP 而不是整个 today.tostring() 在 SQL 服务器管理器 2017 中有效,所以它与我的连接等有关。感谢您对单引号的提醒!
猜你喜欢
  • 2019-10-31
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 1970-01-01
  • 2018-03-29
  • 2014-03-01
相关资源
最近更新 更多