You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

日期小于系统日期时Class字段置空的SQL语句问题求助

修正CASE语句实现日期条件下的Class字段置空逻辑

需求说明

当Date字段值小于系统当前日期(GETDATE())时,将Class字段置为NULL,否则保留原Class值。

示例数据

+----+------------+-------+
| Id |    Date    | class |
+----+------------+-------+
|  1 | 12/31/2022 | A     |
|  2 | 12/31/2023 | B     |
|  3 | 5/11/2023  | C     |
|  4 | 1/15/2020  | D     |
+----+------------+-------+

期望结果

+----+------------+-------+
| Id |    Date    | class |
+----+------------+-------+
|  1 | 12/31/2022 | NUll  |
|  2 | 12/31/2023 | B     |
|  3 | 5/11/2023  | C     |
|  4 | 1/15/2020  | NULL  |
+----+------------+-------+

原语句错误分析

原SQL语句存在两处问题:

  • 条件逻辑写反:需求是Date < GETDATE()时置NULL,但原语句写的是date>getdate()
  • CASE语法错误:then Class as null属于语法误用,CASE表达式的结构应为CASE WHEN 条件 THEN 结果值 ELSE 其他结果值 END,无需额外的as关键字

修正后的SQL语句

1. 查询场景(返回处理后的结果)

SELECT 
    Id,
    Date,
    CASE 
        WHEN Date < GETDATE() THEN NULL 
        ELSE Class 
    END AS Class
FROM 你的表名;

2. 更新场景(直接修改表中数据)

UPDATE 你的表名
SET Class = CASE 
                WHEN Date < GETDATE() THEN NULL 
                ELSE Class 
            END;

验证说明

修正后的语句会正确判断日期:

  • 对于12/31/2022和1/15/2020这类早于当前日期的记录,Class被置为NULL
  • 对于12/31/2023和5/11/2023这类晚于当前日期的记录,保留原Class值

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:30:44