把Oracle中的一个函数换成SQLserver中的函数,实现相同功能

select
A1.month_date a1,
A2.month_date a2
from
(
select
month_date
from dc_market_vol_city_f
where
month_date >=  convert(varchar(7),DATEADD(mm, -37, GETDATE()),120)
and
month_date <= convert(varchar(7),DATEADD(mm, -1, GETDATE()),120)
) A1
left join dc_market_vol_city_f A2
on
months_between(convert(varchar(7),A1.month_date,120),convert(varchar(7),A2.month_date,120)) between 0 and 5



就是最后一句months_between函数改掉

FineReport 孟祥运 发布于 2019-2-26 11:53
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
1
黄源Lv6中级互助
发布于2019-2-26 12:06(编辑于 2019-2-26 17:16)
DATEDIFF(mm,convert(varchar(10),A1.month_date,120),convert(varchar(10),A2.month_date,120)) between 0 and 5

blob.pngblob.png

  • 孟祥运 孟祥运(提问者) 我不返回时间,我确定了时间间隔,取日期,就是我要取A1对应的过去六个月的A2的数据
    2019-02-26 13:09 
  • 黄源 黄源 回复 孟祥运(提问者) 看修改
    2019-02-26 16:54 
  • 孟祥运 孟祥运(提问者) 回复 黄源 我的month_date是varchar格式,存的是201901这样的,一直报无法转换格式 我写成DATEDIFF(mm,convert(varchar(7),A1.month_date,120),convert(varchar(7),A2.month_date,120)) between 0 and 5也不对
    2019-02-26 17:06 
  • 黄源 黄源 回复 孟祥运(提问者) 看修改
    2019-02-26 17:16 
  • 孟祥运 孟祥运(提问者) 回复 黄源 还是不对
    2019-02-26 17:37 
最佳回答
0
No1-王子阳Lv5中级互助
发布于2019-2-26 11:56

换成between  and   ?????

  • 孟祥运 孟祥运(提问者) sqlserver 不支持months_between 函数 把months_between(convert(varchar(7),A1.month_date,120),convert(varchar(7),A2.month_date,120)) between 0 and 5这句SQL换成SQLserver中的写法
    2019-02-26 12:04 
  • 3关注人数
  • 672浏览人数
  • 最后回答于:2019-2-26 17:16
    请选择关闭问题的原因
    确定 取消
    返回顶部