SQL如何做到,当选择一个日期后,例如2025-09-15,自动获取上个月同期数据呢?

需求:

筛选页面日期控件,例如:2025-09-15,自动获取到上个月同期范围数据,也就是2025-08-01 到 2025-08-15 的范围数据

注意不是一天的数据,是一个范围的数据,虽然筛选器选择的是一个天数,但是返回的数据是一个范围上个月同期数据。。。

FineReport Henry.99 发布于 前天 11:53 (编辑于 前天 13:41
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
期待遇见youLv4初级互助
发布于前天 12:46

mysql  

 

  left(日期,10)>=DATE_FORMAT('${start_dt}'- INTERVAL 1 month, '%Y-%m-01')

   left(日期,10)<=DATE_FORMAT('${start_dt}'- INTERVAL 1 month, '%Y-%m-%d')

其他数据库也是类似的写法

 

最佳回答
1
花 花 世 界Lv5见习互助
发布于前天 14:16
select * from 表
where 日期字段>='${DATEINMONTH(MONTHDELTA(日期控件,-1),1)}' 
and 日期字段<='${MONTHDELTA(日期控件,-1)}'

最佳回答
0
snrtuemcLv8专家互助
发布于前天 11:57

这个就是

select * from 表

where 日期字段>='${DATEINMONTH(MONTHDELTA(日期控件,-1),1) ' and 日期字段<='${MONTHDELTA(日期控件,-1)}'

  • Henry.99 Henry.99(提问者) 呃这个试了,不对呀
    2025-09-08 13:41 
  • 期待遇见you 期待遇见you 回复 Henry.99(提问者) 我的这个就是呀,你啥数据库
    2025-09-08 13:51 
  • Henry.99 Henry.99(提问者) 回复 期待遇见you 我用这个可以,我是mysql的
    left(日期,10)>=DATE_FORMAT('${start_dt}'- INTERVAL 1 month, '%Y-%m-01')

    left(日期,10)<=DATE_FORMAT('${start_dt}'- INTERVAL 1 month, '%Y-%m-%d')
    2025-09-08 15:57 
最佳回答
0
大林3143511Lv5中级互助
发布于前天 13:37

这个问题思路说下吧:

1、日期控件选择是输入:注意日期参数输出的格式,一般是“字符串”

2、日期公式的计算:根据使用的数据库,Oracle、sql网上搜下一大把:baf429ff-a22c-491c-aaa9-4bc2537b5cda.png

3、上个月同期数据的查询:有时间范围了,就直接查询就可以了啊

希望可以帮到你

最佳回答
0
CD20160914Lv8专家互助
发布于前天 13:58

select * from 表

where 日期字段>='${MONTHDELTA(日期控件,-1)}' and 日期字段<'${DATEDELTA(MONTHDELTA(日期控件,-1),1)}'

image.png

  • 6关注人数
  • 53浏览人数
  • 最后回答于:前天 14:16
    请选择关闭问题的原因
    确定 取消
    返回顶部