【问题标题】:Updating a date record and getting: Operand type clash: date is incompatible with int更新日期记录并获取:操作数类型冲突:日期与 int 不兼容
【发布时间】:2018-03-29 10:39:59
【问题描述】:

我只是想更新数据库中的日期和时间记录。但它一直给我一个错误:

操作数类型冲突:日期与 int 不兼容

我所做的只是:

DECLARE @todayDate DATE =  GETDATE();
UPDATE Table SET UpdateDate =  @todayDate; -- UpdateDate is DATE

我尝试了很多我在网上看到的东西。

UPDATE Table SET UpdateDate =  CONVERT(VARCHAR(50), @todayDate); -- doesn't work.

我没有使用 dateadd,只是想在日期字段中插入一个日期。

甚至是矫枉过正:

DECLARE @todayDate VARCHAR(50)=  CONVERT(VARCHAR(50),GETDATE());
UPDATE Table SET UpdateDate =  CONVERT(VARCHAR(50),todayDate )

不起作用。它仍然返回:

操作数类型冲突:日期与 int 不兼容

【问题讨论】:

  • 您为什么要尝试将 字符串 存储到日期字段中?
  • @Panagiotis - 许多用户建议这样做:stackoverflow.com/questions/7176596/…
  • 很多用户不知道如何使用正确类型。这就是为什么在 SO 中有这么多关于转换错误的问题。同样,你为什么使用字符串? UdpateDate 的类型是什么? UPDATE Table SET UpdateDate = @todayDate; 怎么了?
  • 如果UpdateDatedate 你应该没有任何问题。如果它是dateteime,但您想在那里保存date,那么您应该没有问题,因为您已经GETDATE() 存储到date 变量中。
  • 为您要更新的表发布CREATE TABLE。看起来UpdateDateint

标签: sql-server date


【解决方案1】:
DECLARE @Table TABLE ( UpdateDate INT );
INSERT INTO @Table VALUES (1);

DECLARE @todayDate DATE =  GETDATE();
UPDATE @Table SET UpdateDate =  CONVERT (INT, CONVERT (VARCHAR(10) , @todayDate, 112));
OUTPUT Deleted.*, Inserted.*;

PS:顺便说一下,您应该将 updateDate-Field 更改为正确的 Type DATE...

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 2021-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多