用 case 表达式更新 table 列日期?

Updating table column date with case expression?

我需要根据其他两个带日期的列(date1date2)用数据更新 column8 - 如果 date1 晚于 date2 那么 column8 就是 YES 否则就是 NO.

我写了这个:

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

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

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

谢谢!

你可以试试 CAST 函数:

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