美文网首页
记:报错不允许从数据类型 varbinary 到 datetim

记:报错不允许从数据类型 varbinary 到 datetim

作者: Gorilla_L | 来源:发表于2021-01-04 16:46 被阅读0次

    场景:在做mybatis批量插入的时候,报了这个错。但是单条插入的时候没问题。
    分析

    1. 先把批量插入的SQL详细看了一遍,没问题。
    2. 把批量插入和单条插入的SQL对比,发现单条插入的SQL是有用<if>标签判空的,当值为空的时候,插入的SQL不带这个字段。
      问题定位:字段类型为datatime2的字段,不允许插入null值。

    解决方案

    1. 尝试用<if>标签判空,当值为空时,插入语句不带该字段。但是批量插入传入的是List,不好用<if>标签判断。不可行
    2. 把数据库字段类型由datatime2改为datatime,xml文件的SQL参数中增加jdbcType = TIMESTAMP,例如:#{item.time, jdbcType = TIMESTAMP}。可行(适用于精度要求不那么高的情况)

    SQLserver datatime 和datetime2区别
    DateTime字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fff ,3个f,精确到1毫秒(ms),示例 2014-12-03 17:06:15.433 。

    DateTime2字段类型对应的时间格式是 yyyy-MM-dd HH:mm:ss.fffffff ,7个f,精确到0.1微秒(μs),示例 2014-12-03 17:23:19.2880929 。

    如果用SQL的日期函数进行赋值,DateTime字段类型要用 GETDATE() ,DateTime2字段类型要用 SYSDATETIME() 。

    相关文章

      网友评论

          本文标题:记:报错不允许从数据类型 varbinary 到 datetim

          本文链接:https://www.haomeiwen.com/subject/kvuvoktx.html