筛选日期总是少一个月数据

写了一条sql,只筛选日期,预览总是少一个月数据,比如筛选1-3月的数据 只会出现一到二月份的数据,筛选二到四月份,只会出现二到三月份的数据,底层表里每个月都有数据,这是什么原因,这是我日期控件的定义:

WHERE 

YHRQ>= '${p_date_beg}'  AND YHRQ<= '${p_date_end}' 

tanko 发布于 2021-4-14 09:08
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
烟尘Lv6高级互助
发布于2021-4-14 09:19(编辑于 2021-4-14 09:22)

首先保证控件是yyyy-MM的格式,然后保证数据字段YHRQ也是yyyy-MM的格式,如果字段格式不对的话,需要转换一下

sqlserver的例子:

where convert(varchar(7),YHRQ,23) between '${p_date_beg}'  AND '${p_date_end}'

问题的原因应该是日期字段没有限制格式,导致查询条件变成 '2021-02-01'<='2021-02',所以少一个月

image.png

最佳回答
0
snrtuemcLv8专家互助
发布于2021-4-14 09:11(编辑于 2021-4-14 09:12)

你去数据库,按这个语句执行下,看能不能查询出数据

我怀疑,是不是这个200行数据,限制你看不到最后一个月数据

image.png

  • tanko tanko(提问者) 不是 ,预览行数调了,出现在报表也是少一个月数据
    2021-04-14 09:15 
  • snrtuemc snrtuemc 回复 tanko(提问者) 看你最后参数什么样子,查询到是具体日期还是月份
    2021-04-14 09:17 
  • tanko tanko(提问者) 问题里写了参数的定义,不管查询什么日期,都是少一个月数据
    2021-04-14 09:19 
  • snrtuemc snrtuemc 回复 tanko(提问者) 这样讲不清楚,表数据截图下,你的查询语句截图下(具体日期的查询语句)
    2021-04-14 09:24 
最佳回答
0
被子Lv7见习互助
发布于2021-4-14 09:13

选择4月后日期按4月1日计算了吧,直接的方法就是+1筛选它是按5.1日前计算,之前遇到过具体的场景忘记了

  • tanko tanko(提问者) 是这个意思,总是少一个月数据
    2021-04-14 09:16 
  • 被子 被子 回复 tanko(提问者) 不知道你底表是怎样的,要么把底表中的年月分开然后用日期控件在sql中做拆分筛选,要么不要用日期控件用年和月的下拉框控件,也就是把年月做数字筛选肯定是没错的
    2021-04-14 09:23 
最佳回答
0
牛~~~Lv6中级互助
发布于2021-4-14 09:41

那个控件筛选的吗?昨天给你提示了,你这筛选框做了格式处理 YYYY-MM,你表字段的格式应该是完整的日期格式,直接用时间字段去比对就会少最后一个月。

最佳回答
0
张洪威Lv6高级互助
发布于2021-4-14 09:49

WHERE 

YHRQ>= '${p_date_beg}'  AND YHRQ<= '${LEFT(monthdelta(p_date_end+"-01",1),7)}' 

  • 6关注人数
  • 886浏览人数
  • 最后回答于:2021-4-14 09:49
    请选择关闭问题的原因
    确定 取消
    返回顶部