获取一个参数之后,如&period_id=2020-10实际要的是2019和2020-09

获取一个参数之后,如:&period_id=2020-10

实际要的是2020-09

这个日期条件计算要怎么写才正确呢

其中year_id是varchar类型

      month_id也是varchar类型


select* from  XXXXXXXXXXX

where year_id='${period_id}' and yeardelta(date '${period_id}',-1)


select* from  XXXXXXXXXXX

where month_id='${period_id}' and monthdelta(date '${period_id}',-1)


FineReport 不必大咖 发布于 2020-10-9 15:50
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
axingLv6专家互助
发布于2020-10-9 15:58(编辑于 2020-10-9 16:06)
select* from  XXXXXXXXXXX
where year_id='${year(monthdelta(period_id+"-01",-1))}'  --2020

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

select* from  XXXXXXXXXXX
where month_id='${left(monthdelta(period_id+"-01",-1),7)}' --2020-09


  • 不必大咖 不必大咖(提问者) 因为month_id 要的格式是年加月份 想问下 month_id 能直接带出年份吗 还是得拼接呢
    2020-10-09 16:03 
  • axing axing 回复 不必大咖(提问者) 更新了
    2020-10-09 16:06 
  • 不必大咖 不必大咖(提问者) 回复 axing 多谢大佬
    2020-10-09 16:25 
最佳回答
0
krystal033Lv7高级互助
发布于2020-10-9 15:54(编辑于 2020-10-9 15:55)
2020-10把这里面的2020- 和 10截取出来  10-1 然后在和2020-拼接 具体怎么拼接怎么截取要看你的数据库什么数据库


  • Coldman Coldman <狗头><狗头>那要是2020-01怎么办
    2020-10-09 16:03 
  • krystal033 krystal033 回复 Coldman 再写一层case when 补全0
    2020-10-09 16:11 
最佳回答
0
snrtuemcLv8专家互助
发布于2020-10-9 15:58(编辑于 2020-10-9 16:00)

参数

period_id=2020-10

INDEXOFARRAY(SPLIT(period_id,"-"),1)  取到2020

INDEXOFARRAY(SPLIT(period_id,"-"),1)-1  取到2019

INDEXOFARRAY(SPLIT(period_id,"-"),2)  取到10

INDEXOFARRAY(SPLIT(period_id,"-"),2)-1 取到9

 

CONCATENATE(INDEXOFARRAY(SPLIT(period_id,"-"),1) ,"-",right(100+INDEXOFARRAY(SPLIT(period_id,"-"),2)-1,2))  拼接得到 2020-09

image.png



  • 4关注人数
  • 303浏览人数
  • 最后回答于:2020-10-9 16:06
    请选择关闭问题的原因
    确定 取消
    返回顶部