sql实现跨年月份的条件判断

年份变量a, 月份变量b,当b>5时,时间为a年 月份>a-5 and 月份< a。

当b<=5 时倒退5个月,取到的月份是去年的月份。

这个逻辑如何实现?

FineReport 帆软用户3yxeX64K8K 发布于 2023-1-31 14:43
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-1-31 14:53(编辑于 2023-1-31 14:54)

where 1=1

and year_code='${format(MONTHDELTA(CONCATENATE(a,"-",b,"-01"),-5),"yyyy")}'

and month_code='${format(MONTHDELTA(CONCATENATE(a,"-",b,"-01"),-5),"MM")}'

image.png

最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-1-31 14:45(编辑于 2023-1-31 15:00)

DATEDELTA(today(),-5)

------------

SELECT * FROM 表 where 时间>='${MONTHDELTA(date(a,b,1),-4)}' and  时间<'${date(a,b,1)}'

  • 帆软用户3yxeX64K8K 帆软用户3yxeX64K8K(提问者) 月份,月份筛选需要在选择的月份和月份-5之间
    2023-01-31 14:50 
  • Z4u3z1 Z4u3z1 回复 帆软用户3yxeX64K8K(提问者) oracle?SqlServer?
    2023-01-31 14:52 
  • 帆软用户3yxeX64K8K 帆软用户3yxeX64K8K(提问者) 回复 Z4u3z1 oracle
    2023-01-31 14:52 
  • Z4u3z1 Z4u3z1 回复 帆软用户3yxeX64K8K(提问者) 描述是不是复杂化了,都是查询倒推5个月(不含)只所选月份的(不含)数据?假设数据库中时间的格式是yyyy-MM-dd参考上面补充的SQL
    2023-01-31 15:02 
  • 帆软用户3yxeX64K8K 帆软用户3yxeX64K8K(提问者) 回复 Z4u3z1 就是很麻烦的一点是,数据库数据存的是单一个月份,不是时间,数据库时间是存的是,年份 月份这样子,分开存的
    2023-01-31 15:06 
  • 2关注人数
  • 428浏览人数
  • 最后回答于:2023-1-31 15:00
    请选择关闭问题的原因
    确定 取消
    返回顶部