SQLSERVERsql语句问题

现表t1有两个日期字段RGMON和Z1MON,类型都为yyyyMM类型。

我想在select t1表的where条件下加上 RGMON<= Z1MON + 入参数字a(表示月)

即RGMON日期小于等于Z1MON+数字月,请问怎么sql语句拼写

补充:

image.png

image.png

补充2:

image.png

image.png

楼下正确答案:${a}要加的数   Z1MON字段月份

where RGMON<= REPLACE(CONVERT(varchar(7), dateadd(month,${a},Z1MON+'01'), 120),'-','')

FineReport SQL 狂奔的小蜗牛 发布于 2022-12-7 23:31 (编辑于 2022-12-8 14:42)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-12-8 08:59(编辑于 2022-12-8 09:53)

where RGMON<= REPLACE(CONVERT(varchar(7), dateadd(month,${a},Z1MON+'01'), 120),'-','')

image.png

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) https://bbs.fanruan.com/wenda/question/139635.html 大佬有时间看看我的另一个问题
    2022-12-08 15:17 
最佳回答
0
weibwLv7高级互助
发布于2022-12-8 07:29(编辑于 2022-12-8 08:19)

~

最佳回答
0
CD20160914Lv8专家互助
发布于2022-12-8 08:06

select a.* from t1 a

join t1 b on a.id=b.id and a.rgmon<=z1mon

where 1=1

and a.字段名称='${入参数字a}'

这样?

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 是表的每行数据都有rgmon,z1mon这两个字段,from这个表时想过滤掉一下数据,过滤条件就是RGMON<= Z1MON + a,这里的a是帆软的一个入参,是一个数字,说白了就是日期RGMON<=日期Z1MON + 月份a。但是我不知道这种在帆软的sql数据集里怎么写
    2022-12-08 08:48 
  • CD20160914 CD20160914 回复 狂奔的小蜗牛(提问者) 我的这个不行?那么现在我这个出来是如何的?我没有明白你最终要如何
    2022-12-08 10:16 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 CD20160914 我是一个表的两个字段rgmon,z1mon,判断rgmon<=z1mon+一个数字,rgmon,z1mon在数据库存的字符串,值为yyyymm
    2022-12-08 10:33 
最佳回答
0
lxy2Lv6中级互助
发布于2022-12-8 08:43

select * from 表 where RGMON<=format(CAST(DATEADD(M,$a,CONCAT('Z1MON','01')) AS DATE),'yyyyMM')

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 大佬,你看下,我补充了图说$a无效
    2022-12-08 08:59 
  • lxy2 lxy2 回复 狂奔的小蜗牛(提问者) select * from 表 where RGMON<=format(CAST(DATEADD(M,${a},CONCAT(\'Z1MON\',\'01\')) AS DATE),\'yyyyMM\')
    2022-12-08 10:03 
最佳回答
0
BrmiseLv6见习互助
发布于2022-12-8 09:28

那你直接把Z1MON截断 再拼接上参数月份不就行了吗,substring(Z1MON,1,4)+'${a}'

  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 但是Z1MON他本身是带月份的,是那种yyyymm的字符串
    2022-12-08 09:31 
  • Brmise Brmise 回复 狂奔的小蜗牛(提问者) 我不明白你的意思了,你不就是要把参数月份拼接到Z1MON的年份上去吗?
    2022-12-08 10:04 
  • 狂奔的小蜗牛 狂奔的小蜗牛(提问者) 回复 Brmise 但是直接拼应该不对吧,应该会出现那种2022+13月这种情况吧,要是单纯数字拼接你的就可以
    2022-12-08 10:48 
  • Brmise Brmise 回复 狂奔的小蜗牛(提问者) 你不能把“13月” \"月\"给剔除掉吗?replace()?
    2022-12-08 11:01 
  • Brmise Brmise 回复 狂奔的小蜗牛(提问者) 再用CONCATENATE()函数合并一下
    2022-12-08 11:02 
  • 5关注人数
  • 470浏览人数
  • 最后回答于:2022-12-8 14:42
    请选择关闭问题的原因
    确定 取消
    返回顶部