Mybatis日常问题TO_CHAR(deliveryTime,‘yyyy-mm-dd hh24:mi:ss‘)

mybatis 中Oracle 函数 TO_CHAR(deliveryTime,‘yyyy-mm-dd hh24:mi:ss’) 的用法:

public int insertPayDetailInfo(@Param("serialNumber") String serialNumber,@Param("list") List<LongDistancePayOaDetailDto> longDistancePayOaDetailDtos);

<!-- 方法实现 -->
  <insert id="insertPayDetailInfo">
        INSERT INTO UF_CYHTZFSHLCZJB_DT1 (
        LSH,MXBH,DZLX,HTZFLX,FCBH,FCSJ,HTJE,YFJE,SFJE,BZGS,KKLX,CP
        )
        <foreach collection="list" item="ldpodd" separator="union"
                 open="select serialNumber,ldPayDetailNumber,documentType,contractPayType,deliveryNumber,TO_CHAR(deliveryTime,'yyyy-mm-dd hh24:mi:ss'),contractAmount,
                 amountPayble,actualPaidAmount,submitCompany,chargeType,licencePlateNumber from(" close=")">
            SELECT
            #{serialNumber, jdbcType=VARCHAR} serialNumber,
            #{ldpodd.ldPayDetailNumber, jdbcType=VARCHAR} ldPayDetailNumber,
            #{ldpodd.documentType, jdbcType=VARCHAR} documentType,
            #{ldpodd.contractPayType, jdbcType=VARCHAR} contractPayType,
            #{ldpodd.deliveryNumber, jdbcType=VARCHAR} deliveryNumber,
            #{ldpodd.deliveryTime, jdbcType=VARCHAR} deliveryTime,
            <!--  TO_CHAR( #{ldpodd.deliveryTime},'yyyy-mm-dd hh24:mi:ss') deliveryTime,-->
            #{ldpodd.contractAmount, jdbcType=VARCHAR} contractAmount,
            #{ldpodd.amountPayble, jdbcType=VARCHAR} amountPayble,
            #{ldpodd.actualPaidAmount, jdbcType=VARCHAR} actualPaidAmount,
            #{ldpodd.submitCompany, jdbcType=VARCHAR} submitCompany,
            #{ldpodd.chargeType, jdbcType=VARCHAR} chargeType,
            #{ldpodd.licencePlateNumber, jdbcType=VARCHAR} licencePlateNumber
            from dual
        </foreach>
    </insert>
TO_CHAR( #{createDate, jdbcType=VARCHAR},‘yyyy-mm-dd hh24:mi:ss’) 时间为空不会报错;
TO_CHAR( #{createDate},‘yyyy-mm-dd hh24:mi:ss’) 时间为空报错。
以上代码中 #{ldpodd.deliveryTime, jdbcType=VARCHAR} deliveryTime, 指定了 deliveryTime 的类型,即使为空T O_CHAR(deliveryTime,‘yyyy-mm-dd hh24:mi:ss’) 也不会报错;其实就是 #{} 取值对 null 的处理

在这里插入图片描述
---------------------------------------------分割线,2020年8月4日17:16:01------------------------------------

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用Java中的SimpleDateFormat类来解析和格式化日期时间,然后将其作为参数传递给MyBatis的Mapper方法。 比如,你可以定义一个Mapper接口如下: ```java public interface ZdyjkzbjlMapper { List<Zdyjkzbjl> findFirstShift(@Param("jsbh") String jsbh, @Param("date") String date); List<Zdyjkzbjl> findSecondShift(@Param("jsbh") String jsbh, @Param("date") String date); List<Zdyjkzbjl> findThirdShift(@Param("jsbh") String jsbh, @Param("date") String date); } ``` 然后,你可以在Mapper XML文件中编写对应的SQL语句: ```xml <select id="findFirstShift" resultType="Zdyjkzbjl"> select * from zdyjkzbjl where jsbh = #{jsbh} and TO_CHAR(pbrq, 'yyyy-mm-dd') = #{date} and bc = '1' and TO_CHAR(jbsj, 'yyyy-mm-dd hh24:MI') <> '2023-05-23 07:50' and TO_CHAR(jiaobsj, 'yyyy-mm-dd hh24:MI') <> '2023-05-23 19:50' and TO_CHAR(now(), 'yyyy-mm-dd hh24:MI:SS') BETWEEN '2023-05-23 07:50:00' and '2023-05-23 17:00:00'; </select> <select id="findSecondShift" resultType="Zdyjkzbjl"> select * from zdyjkzbjl where jsbh = #{jsbh} and TO_CHAR(pbrq, 'yyyy-mm-dd') = #{date} and bc = '2' and TO_CHAR(jbsj, 'yyyy-mm-dd hh24:MI') = '2023-05-23 19:50' and TO_CHAR(jiaobsj, 'yyyy-mm-dd hh24:MI') = '2023-05-24 01:50' and TO_CHAR(now(), 'yyyy-mm-dd hh24:MI:SS') BETWEEN '2023-05-23 17:00:00' and '2023-05-24 01:30:00'; </select> <select id="findThirdShift" resultType="Zdyjkzbjl"> select * from zdyjkzbjl where jsbh = #{jsbh} and TO_CHAR(pbrq, 'yyyy-mm-dd') = #{date} and bc = '3' and TO_CHAR(jbsj, 'yyyy-mm-dd hh24:MI') <> '2023-05-24 01:50' and TO_CHAR(jiaobsj, 'yyyy-mm-dd hh24:MI') <> '2023-05-24 07:50' and TO_CHAR(now(), 'yyyy-mm-dd hh24:MI:SS') BETWEEN '2023-05-24 01:30:00' and '2023-05-24 07:50:00'; </select> ``` 最后,你可以在Java中调用Mapper方法,传入相应的参数: ```java SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = "2023-05-23"; String jsbh = "330400111"; List<Zdyjkzbjl> firstShiftList = zdyjkzbjlMapper.findFirstShift(jsbh, dateStr); List<Zdyjkzbjl> secondShiftList = zdyjkzbjlMapper.findSecondShift(jsbh, dateStr); List<Zdyjkzbjl> thirdShiftList = zdyjkzbjlMapper.findThirdShift(jsbh, dateStr); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值