【问题标题】:Updating table column date with case expression?用案例表达式更新表列日期?
【发布时间】:2023-03-18 04:17:02
【问题描述】:

我需要更新column8 的数据取决于其他两列的日期(date1date2) - 如果date1 晚于date2 那么column8YES 否则它的@ 987654328@.

这是我写的:

update table1
set delay = case when date1 > date2 then 'YES' 
                 when date2 is NULL then 'YES' 
                 else 'NO'
            end

问题在于它可能不是比较日期而是比较表达式的长度,因为除了空列之外我在每一列中都没有...它告诉我它可能不知道我希望它作为日期进行比较但是数据库中的列是日期格式YYYY-MM-DD

有没有办法更新我的代码或添加一些东西来比较日期而不是字符串长度?

谢谢!

【问题讨论】:

  • 不明白。您可以编辑您的问题并添加输入数据和您得到的错误结果吗?
  • date1 和 date2 列的数据类型?
  • 根据其他列存储计算值通常是个坏主意。 (数据冗余,数据不一致的风险。)改为创建视图。或使用触发器进行管理。)
  • 两列的数据类型是 DT_DATE,对于输入数据和结果 .. 输入数据是上述格式 YYYY-MM-DD 的日期,结果是这些日期的比较 - 第 8 列中的新条目取决于哪个日期更大

标签: sql sql-server date sql-update case


【解决方案1】:

你可以试试 CAST 函数:

WHEN CAST(date1 AS DATE) > CAST(date2 AS DATE)

【讨论】:

  • 抱歉,这对我的错误有所帮助,谢谢
猜你喜欢
  • 1970-01-01
  • 2017-05-26
  • 1970-01-01
  • 2019-06-08
  • 2020-05-17
  • 1970-01-01
  • 2021-06-22
  • 2012-02-21
  • 1970-01-01
相关资源
最近更新 更多