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

SQL查询:仅比较datetime的年月,筛选符合条件的id

SQL筛选方案

可以通过分组聚合或者自连接的方式,提取val字段的年月部分进行对比,筛选出符合要求的id。以下是两种常见实现方式:

方式一:分组聚合

SELECT t.id
FROM tval t
-- 关联目标id列表
JOIN (SELECT id FROM id WHERE sid = 2403) ids ON t.id = ids.id
WHERE t.fid IN (3771, 3782)
GROUP BY t.id
HAVING 
  -- 提取两个fid对应val的年月并比较差异
  DATE_FORMAT(MAX(CASE WHEN t.fid = 3771 THEN t.val END), '%Y-%m') 
  != 
  DATE_FORMAT(MAX(CASE WHEN t.fid = 3782 THEN t.val END), '%Y-%m')

方式二:自连接

SELECT DISTINCT t1.id
FROM tval t1
JOIN tval t2 ON t1.id = t2.id
-- 关联目标id列表
JOIN (SELECT id FROM id WHERE sid = 2403) ids ON t1.id = ids.id
WHERE 
  t1.fid = 3771 
  AND t2.fid = 3782
  -- 直接对比两个val的年月部分
  AND DATE_FORMAT(t1.val, '%Y-%m') != DATE_FORMAT(t2.val, '%Y-%m')

适配不同数据库的说明

上述代码基于MySQL语法,若使用其他数据库,需调整日期格式化函数:

  • Oracle:替换DATE_FORMAT(val, '%Y-%m')为TO_CHAR(val, 'YYYY-MM')
  • SQL Server:替换为CONVERT(varchar(7), val, 120)或FORMAT(val, 'yyyy-MM')
  • 若val是字符串格式,需先转换为日期类型再提取年月。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:15:12