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

SQL筛选:如何确保两日期列均属于2023年1月

解决方法

你原来用OR的问题在于,只要其中一列符合条件就会被选中,自然会出现另一列日期不符合要求的情况。要实现“两列日期均为2023年1月”的筛选目标,得用AND同时约束两列,还要适配数据中存在空值的场景。

直接看修正后的SQL语句:

SELECT *  
FROM table  
WHERE 
  (DATE_TRUNC(SAFE_CAST(column_a AS DATE), MONTH) = '2023-01-01' OR column_a IS NULL)
  AND 
  (DATE_TRUNC(column_b, MONTH) = '2023-01-01' OR column_b IS NULL)

核心说明:

  • 用AND替代OR,确保两列都满足「要么是2023年1月的日期,要么是空值」的条件
  • 保留SAFE_CAST处理column_a的类型转换,避免非日期格式的值导致查询报错
  • 如果你需要两列都必须有值且都属于2023年1月,可以去掉空值判断的部分:
SELECT *  
FROM table  
WHERE 
  DATE_TRUNC(SAFE_CAST(column_a AS DATE), MONTH) = '2023-01-01'
  AND 
  DATE_TRUNC(column_b, MONTH) = '2023-01-01'

这样就能精准筛选出符合要求的数据,不会再出现某列日期不在2023年1月的情况。

内容的提问来源于stack exchange,提问作者Adrien-13

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 07:41:29