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

含空End_dt字段的日期范围客户数据提取失败求助

解决日期范围查询中无法提取End_dt为空客户的问题

核心问题分析

你无法提取End_dt为空的客户,通常是因为错误地用End_dt = ''判断空值——数据库中空值一般用NULL表示,必须用End_dt IS NULL来匹配。部分场景下空值也可能存储为空白字符串,因此需要同时判断两种情况。

合并后的查询逻辑

你的四个查询条件可简化为:

  • Start_dt不晚于31/12/2023
  • 同时满足End_dt为空,或End_dt早于01/01/2024(即31/12/2023)

通用SQL查询语句(以MySQL为例)

SELECT Client_Id, Start_dt, End_dt
FROM your_table_name
WHERE
  -- 转换日期格式为数据库可识别格式,确保比较准确
  STR_TO_DATE(Start_dt, '%d/%m/%Y') <= STR_TO_DATE('31/12/2023', '%d/%m/%Y')
  AND
  (
    End_dt IS NULL  -- 匹配NULL类型的空值
    OR End_dt = ''  -- 匹配空白字符串类型的空值
    OR STR_TO_DATE(End_dt, '%d/%m/%Y') < STR_TO_DATE('01/01/2024', '%d/%m/%Y')
  );

严格对应原始四个条件的SQL语句

如果需要完全贴合你列出的四个条件,可使用以下写法:

SELECT Client_Id, Start_dt, End_dt
FROM your_table_name
WHERE
  -- 条件1: Start_dt早于01/07/2023且End_dt为空
  (STR_TO_DATE(Start_dt, '%d/%m/%Y') < STR_TO_DATE('01/07/2023', '%d/%m/%Y') AND (End_dt IS NULL OR End_dt = ''))
  OR
  -- 条件2: Start_dt早于01/07/2023且End_dt早于31/12/2023
  (STR_TO_DATE(Start_dt, '%d/%m/%Y') < STR_TO_DATE('01/07/2023', '%d/%m/%Y') AND STR_TO_DATE(End_dt, '%d/%m/%Y') < STR_TO_DATE('31/12/2023', '%d/%m/%Y'))
  OR
  -- 条件3: Start_dt在01/07/2023至31/12/2023之间且End_dt早于31/12/2023
  (STR_TO_DATE(Start_dt, '%d/%m/%Y') BETWEEN STR_TO_DATE('01/07/2023', '%d/%m/%Y') AND STR_TO_DATE('31/12/2023', '%d/%m/%Y') AND STR_TO_DATE(End_dt, '%d/%m/%Y') < STR_TO_DATE('31/12/2023', '%d/%m/%Y'))
  OR
  -- 条件4: Start_dt在01/07/2023至31/12/2023之间且End_dt为空
  (STR_TO_DATE(Start_dt, '%d/%m/%Y') BETWEEN STR_TO_DATE('01/07/2023', '%d/%m/%Y') AND STR_TO_DATE('31/12/2023', '%d/%m/%Y') AND (End_dt IS NULL OR End_dt = ''));

结果验证

执行上述语句后,会精准提取你预期的客户:Client a、Client b、Client c、Client d、Client e、Client f。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:36:02