在参数中配置日期减一年怎么实现

SELECT ZT_TYPE,SUM(NUM) NUM FROM  scott.DJ_NSRXX   

WHERE  ZT_TYPE in ('5','6')

${if(len(date_s)==0,"","and DATA_DATE>='"+left(YEARDELTA(date_s,-1),7)+"'")}

${if(len(date_e)==0,"","and DATA_DATE<='"+left(YEARDELTA(date_e,-1),7)+"'")}

GROUP BY ZT_TYPE order by ZT_TYPE

image.png

例如这样,我要判断date_date等于参数的日期减一年

816f19bec492fd7bf00213b71ca671b.jpg

这个方法也试了,但是查出来没有数据...

image.png

FineReport 职业小白 发布于 2022-3-28 09:57 (编辑于 2022-3-28 10:39)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-3-28 10:02(编辑于 2022-3-28 10:39)

要不把你sql语句,,发出来。。放在最上面。。。。。

image.png

这个是最后预览得到的sql...

首先在工具端去查询录入你的时间,看数据库返回是否有数据。如果有,

那么你不要加参数。直接在设计器把刚才的语句,放进设计器去查询,看是否数据。如果没有,那么应该是你定义 的数据连接问题,如果有数据那么再检查参数语句

重新录入后。你看一下它的日志得出的sql语句是如何的

image.png

把这个里面得到的sql。放在客户端工具查询看是否有结果。

  • 职业小白 职业小白(提问者) 这个我试了一下,加了yeardelta函数之后获取到的日期就有问题了,是因为我的日期控件是年月类型,yyyy-MM的吗??
    2022-03-28 10:27 
  • CD20160914 CD20160914 回复 职业小白(提问者) 那肯定不行了。。你上面截图不是写的yyyy-MM-dd吗,为什么又说是yyyy-MM?
    2022-03-28 10:30 
  • CD20160914 CD20160914 回复 职业小白(提问者) 如果是yyyy-MM用户只录入了年月。。那么就要改成 YEARDELTA(date_s+\"-01\",-1)
    2022-03-28 10:31 
  • CD20160914 CD20160914 回复 职业小白(提问者) 把我回复的公式那个斜杠去掉。。就是多拼一起-01进去。。让它真正的年月日的格式
    2022-03-28 10:32 
  • CD20160914 CD20160914 回复 职业小白(提问者) 你录入的参数是年月日,最后查询 的时候想限制只要年月?
    2022-03-28 10:40 
最佳回答
0
Z~/Lv6初级互助
发布于2022-3-28 10:01

date_sub()

最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-3-28 10:02

+YEARDELTA(date_s,-1)+

  • 职业小白 职业小白(提问者) 用了这个,但是不对啊
    2022-03-28 10:04 
  • Z4u3z1 Z4u3z1 回复 职业小白(提问者) 这么不对?你的date_s是不是标准日期
    2022-03-28 10:05 
  • 职业小白 职业小白(提问者) 回复 Z4u3z1 您可以看下我上传的图片,我的日期控件配置
    2022-03-28 10:13 
  • Z4u3z1 Z4u3z1 回复 职业小白(提问者) 你是语法的错 :${IF(LEN(date_s)==0,\"\",\" AND DATA_DATE>=\'\"+YEARDELTA(date_s,-1)+\"\'\")} 把斜杠删除,这个是论坛自己加的
    2022-03-28 10:23 
最佳回答
0
snrtuemcLv8专家互助
发布于2022-3-28 10:04(编辑于 2022-3-28 10:09)

直接date_s改成yeardelta(date_s,-1)

===

YEARDELTA(date,delta):返回指定日期后delta年的日期。

示例:YEARDELTA("2008-10-10",10)等于2018-10-10。

====

image.png

  • 职业小白 职业小白(提问者) 这个用了但是不对啊
    2022-03-28 10:04 
  • snrtuemc snrtuemc 回复 职业小白(提问者) 你的括号什么意义,看修改答案
    2022-03-28 10:09 
  • 职业小白 职业小白(提问者) 回复 snrtuemc 这个括号去掉也没有数据,它并没有什么影响啊...
    2022-03-28 10:12 
  • snrtuemc snrtuemc 回复 职业小白(提问者) 括号肯定需要去掉,同样语句,直接取数据库查询下,看下有没有数据,YEARDELTA用法肯定是没问题的。
    2022-03-28 10:15 
  • 职业小白 职业小白(提问者) 回复 snrtuemc 数据库我写死,查前一年的是有数据的,当年也是有数据的,我也很奇怪
    2022-03-28 10:18 
最佳回答
0
qwe9711111Lv5见习互助
发布于2022-3-28 10:58

yeardelta 函数是只满足在设计器里面公式的 年差计算,而并不适用于创建的数据集里面,数据集里面的SQL中对应的语法是要满足对应的数据库类型,且该SQL放在对应数据库中去也是可以去执行的。

所以此处还是要看你所连接的数据库类型是哪种。

  • 5关注人数
  • 507浏览人数
  • 最后回答于:2022-3-28 10:58
    请选择关闭问题的原因
    确定 取消
    返回顶部