一 oracle数据库
数据库时间类型为DATE
 
 TO_CHAR 把日期或数字转换为字符串
 TO_DATE 把字符串转换为数据库中的日期类型 TO_DATE(char, ‘格式’)
 TO_NUMBER 将字符串转换为数字 TO_NUMBER(char, ‘格式’)
1、入参是String类型的数据

mybatis 处理时间范围
使用TO_DATE函数将String类型的时间转成yyyy-MM-dd格式时间。
  <if test="jyzbLedger.voucherTimeTo != null and jyzbLedger.voucherTimeTo != ''">
     and VOUCHER_TIME <![CDATA[>= ]]> TO_DATE(#{jyzbLedger.voucherTimeTo},'yyyy-MM-dd')
   </if>
   <if test="jyzbLedger.voucherTimeFrom != null and jyzbLedger.voucherTimeFrom != ''">
      and VOUCHER_TIME <![CDATA[<= ]]> TO_DATE(#{jyzbLedger.voucherTimeFrom},'yyyy-MM-dd')
   </if>
MybatisPlus中时间范围查询
 queryWrapper
   .apply(ObjectUtils.isNotEmpty(jyzbLedger.getVoucherTimeTo()),
     "VOUCHER_TIME >= TO_DATE ({0},'yyyy-MM-dd')", jyzbLedger.getVoucherTimeTo())
   .apply(ObjectUtils.isNotEmpty(jyzbLedger.getVoucherTimeFrom()),
     "VOUCHER_TIME <= TO_DATE ({0},'yyyy-MM-dd')", jyzbLedger.getVoucherTimeFrom());
2、入参是Date类型的时间数据
Date类型接参数就要和前端固定传参格式比如yyyy-MM-dd,然后使用@DateTimeFormat格式化,不使用 @DateTimeFormat然后使用Date类型接参数会报错 !

mybatis 处理时间范围
TO_CHAR 把日期或数字转换为字符串
使用 TO_CHAR 函数将入参日期格式转换成指定格式字符串,将查询的参数也转换成指定格式字符串
<!-- voucherTimeTo为Date类型时不能用 jyzbLedger.voucherTimeTo != '' 判空会报错的          -->
 <if test="jyzbLedger.voucherTimeTo != null ">
     and to_char(VOUCHER_TIME,'yyyy-MM-dd') <![CDATA[>= ]]> to_char(#{jyzbLedger.voucherTimeTo},'yyyy-MM-dd')
 </if>
 <if test="jyzbLedger.voucherTimeFrom != null ">
      and to_char(VOUCHER_TIME,'yyyy-MM-dd') <![CDATA[<= ]]> to_char(#{jyzbLedger.voucherTimeFrom},'yyyy-MM-dd')
 </if>
MybatisPlus中时间范围查询
参考上面的
二 mysql数据库
数据库时间类型为DATE
 
2、入参是Date类型的时间数据
- 入参
achievementDateStart: 2023-04-26
achievementDateStartEnd: 2023-05-19
- 接收参数类型
    /**
     * 业绩时间-开始
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "业绩时间-开始")
    private Date achievementDateStart;
    /**
     * 业绩时间-结束
     */
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "业绩时间-结束")
    private Date achievementDateStartEnd;
mybatis 处理时间范围
date_format 将Date类型参数格式化成指定类型的时间
   <if test="oppConditionVO.achievementDateStart != null and oppConditionVO.achievementDateStartEnd != null">
     and date_format( achievement_date, '%Y-%m-%d' )
      BETWEEN date_format( #{oppConditionVO.achievementDateStart}, '%Y-%m-%d' ) 
      and date_format( #{oppConditionVO.achievementDateStartEnd}, '%Y-%m-%d' )
  </if>
MybatisPlus中时间范围查询
  queryWrapper.apply(oppConditionVO.getAchievementDateStart() != null,
                        "date_format (achievement_date,'%Y-%m-%d') >= date_format ({0},'%Y-%m-%d')", oppConditionVO.getAchievementDateStart())
                .apply(oppConditionVO.getAchievementDateStartEnd() != null,
                        "date_format (achievement_date,'%Y-%m-%d') <= date_format ({0},'%Y-%m-%d')", oppConditionVO.getAchievementDateStartEnd());
Mybatis-Plus时间范围查询



















