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

CASE WHEN日期判断异常求助:结果全返回'counted'如何修复

问题修复方案

你的问题出在两个关键地方:日期常量的写法错误,以及条件逻辑和需求完全相反!

1. 核心错误:日期未加引号被当成算术运算

你写的04/17/2019没有用单引号括起来,数据库会把它解析成除法运算:4 ÷ 17 ÷ 2019,结果是一个极小的数值(≈0.000116)。不管你的create_date_time是日期类型还是字符串类型,和这个数值比较时,都会出现完全不符合预期的结果——这就是为什么所有数据都返回counted的原因。

2. 条件逻辑写反了

你的需求是:2019-04-17及之后的日期标记为'counted',之前的标记为'need counted',但你原来的CASE语句把小于这个日期的情况返回counted,完全搞反了逻辑。

正确的SQL语句

把日期用单引号括起来(使用数据库标准的YYYY-MM-DD格式,避免因日期格式设置差异导致的问题),同时调整条件逻辑:

CASE 
    WHEN cc.create_date_time >= '2019-04-17' THEN 'counted'
    WHEN cc.create_date_time < '2019-04-17' THEN 'need counted'
    ELSE NULL 
END AS TIME_GAP

额外提示

如果你的日期字段是字符串格式(比如存储为MM/DD/YYYY),可以用显式的日期转换函数确保比较准确:

  • MySQL/MariaDB:STR_TO_DATE(cc.create_date_time, '%m/%d/%Y') >= '2019-04-17'
  • PostgreSQL:TO_DATE(cc.create_date_time, 'MM/DD/YYYY') >= '2019-04-17'
  • SQL Server:CONVERT(DATE, cc.create_date_time, 101) >= '2019-04-17'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:27:53