现在有个需求是根据给定日期的范围查询,第一点想到的是,前台传一个日期区间,后边接收到值以后再SQL语句中使用 Between and 查询。

出现的问题:
前台使用element的日期组件:
在这里插入图片描述
它默认返回的是date类型,而且这个组件只返回一个对象,这对后台使用 Between an比较麻烦,
这里不再赘述问题的产生原因,直接上代码,亲测有效。
首先使用elementui中时间选择器,我使用的是带快捷选项的那个:

<el-date-picker
      v-model="params.date"
      type="daterange"
      format="yyyy 年 MM 月 dd 日"
      value-format="yyyy-MM-dd"
      align="right"
      unlink-panels
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      :picker-options="pickerOptions">
    </el-date-picker>

然后 使用v-model 绑定值

注意这里的startTime和endTime才是真正后台接受的值,继续看下面就明白了

 params: {
                    startTime: '',
                    endTime: '',
                    date: '',
                },

这里说一下 element中的中的 type="daterange"默认返回的是一个 String类型的数组,所以你在后台接受时不能使用Date类型去接收**

完成上面两步以后就要发送请求给后台传数据了
:这里需要把上面日期选择器得到的就是 date 转换为字符串,并且给他截取成你需要的字符串,着了我截取后传给后台的值 的格式是: startTime=2010-10-02 endTime=2012-10-3

 let startDate=this.params.date.toString();
                this.params.startTime=startDate.substring(0,10);
                this.params.endTime=startDate.substring(11)

然后后台定义为

  private String startTime;
  private Srring endTime

这样后台就能获取到日期区间,并且在使用Between and 查询时也可以查询到正确的值,我的这个日期选择器没有做例如 只能选择今天之前的日期这样的处理,需要的话还请自行百度,

Logo

前往低代码交流专区

更多推荐