按年月日时分秒这样可以查询时间区间,但是按年月日就样的日期格式查询后台就报错

Blade 未结 1 1191
javahuan
javahuan 2021-02-03 16:10

一、该问题的重现步骤是什么?

  1.  按年月日时分秒这样可以查询时间区间,但是按年月日就样的日期格式查询后台就报错


 

  2. 代码描述如下
    前端vue如下

          {

            label: "消费日期",

            prop: "createTime",

            search: true,

            type: "daterange",

            format:"yyyy-MM-dd",

            valueFormat:"yyyy-MM-dd",

            searchSpan: 8,

            searchRange: true,

            searchOrder: 0,

            addDisplay:false,

            rules: [

              {

                required: true,

                message: "请输入消费日期",

                trigger: "blur",

              },

            ],

          },

       后端如下

/**

* 消费日期

*/

@DateTimeFormat(pattern=DateUtil.PATTERN_DATE)

@JsonFormat(pattern=DateUtil.PATTERN_DATE)

@ApiModelProperty(value = "消费日期")

private LocalDateTime createTime;

这里的PATTERN_DATE是yyyy-MM-dd


3. 运行报错如下

Caused by: java.text.ParseException: Unparseable date: "2021-02-01"

at java.text.DateFormat.parse(DateFormat.java:366)

at org.springblade.core.tool.utils.ConcurrentDateFormat.parse(ConcurrentDateFormat.java:77)

at org.springblade.core.tool.utils.DateUtil.parse(DateUtil.java:403)

at org.springblade.core.mp.support.SqlKeyword.lambda$buildCondition$0(SqlKeyword.java:95)

at java.util.LinkedHashMap.forEach(LinkedHashMap.java:676)

at org.springblade.core.mp.support.SqlKeyword.buildCondition(SqlKeyword.java:64)

at org.springblade.core.mp.support.Condition.getQueryWrapper(Condition.java:95)

at org.springblade.core.mp.support.Condition.getQueryWrapper(Condition.java:79)

at org.business.lcyj.finance.controller.XjOrderInfoController.list(XjOrderInfoController.java:86)

at org.business.lcyj.finance.controller.XjOrderInfoController$$FastClassBySpringCGLIB$$639f252a.invoke()

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)

... 86 common frames omitted


二、你期待的结果是什么?实际看到的又是什么?

只按年月日这样的日期格式查询 不带时分秒,实际看到的是后台报错


三、你正在使用的是什么产品,什么版本?在什么操作系统上?
bladex cloud版  版本号是2.7.0.RELEASE  全部运行在widows上面

1条回答
  •  3395733618
    3395733618 (楼主)
    2021-02-03 16:26

    哥们,我看你发了好几贴了。

    mysql时间查询要用大于、小于、等于、大于等于、小于等于去查,不能用like查

    比如你要查今天的创建数据2021-02-03

    那就要

    and create_tieme >= '2021-02-03'
    and create_time < '2021-02-04'

    其次你要注意,mybatis 的mapper是xml,大于小于符号要转义


    再次如果你使用mybatis-plus的wrapper设置条件

    就要

    LocalDate tody = LocalDate.now();
    ......

    lambdaWrapper.ge(XXX::getCreateTime, today)
    .lt(XXX::getCreateTime, today.plusDay(1L));



    0 讨论(1)
提交回复