Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mybatis DateTypeHandler无法将java日期转换为sql时间戳_Java_Mysql_Mybatis_Spring Mybatis - Fatal编程技术网

mybatis DateTypeHandler无法将java日期转换为sql时间戳

mybatis DateTypeHandler无法将java日期转换为sql时间戳,java,mysql,mybatis,spring-mybatis,Java,Mysql,Mybatis,Spring Mybatis,我想在MySQL中存储日期作为时间戳。我发现DateTypeHandler似乎可以进行这种转换。我把它放在我的项目中,但失败了 我在“mapper.xml”中尝试了以下两种方法,但都失败了 <insert id="insertUser"> insert into user (user_id, password, token, register_time, user_type, account_type) values ( #{userId}, #{pa

我想在MySQL中存储日期作为时间戳。我发现
DateTypeHandler
似乎可以进行这种转换。我把它放在我的项目中,但失败了

我在“mapper.xml”中尝试了以下两种方法,但都失败了

<insert id="insertUser">
    insert into user (user_id, password, token,
    register_time, user_type, account_type) values (
    #{userId},
    #{password}, #{token}, #{registerTime, jdbcType=TIMESTAMP,
    javaType=java.util.Date, typeHandler=org.apache.ibatis.type.DateTypeHandler},
    #{userType},
    #{accountType}
    )
</insert>

<insert id="insertUser">
    insert into user (user_id, password, token,
    register_time, user_type, account_type) values (
    #{userId},
    #{password}, #{token}, #{registerTime, typeHandler=org.apache.ibatis.type.DateTypeHandler},
    #{userType},
    #{accountType}
    )
</insert>

MySql时间戳类型只能存储“1970-01-01 00:00:01”UTC到“2038-01-19 03:14:07”UTC范围内的数据值,您可以尝试在属于此类型的register_time列中插入值“3892-04-19 00:00:00”。这将抛出错误:

Data truncation: Incorrect datetime value: '3892-04-19 00:00:00' for column register_time' at row 1
检查此未来日期是否正确,如果正确,请将mapper中的
jdbcType=TIMESTAMP,
更改为
jdbcType=DATETIME
。xml可以解决此问题。(MySql日期时间类型支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”


参考资料:

MySql时间戳类型只能存储从“1970-01-01 00:00:01”UTC到“2038-01-19 03:14:07”UTC范围内的数据值,并且您尝试在该类型的寄存器时间列中插入值“3892-04-19 00:00:00”。这会引发错误:

Data truncation: Incorrect datetime value: '3892-04-19 00:00:00' for column register_time' at row 1
检查此未来日期是否正确,如果正确,请在mapper.xml中将
jdbcype=TIMESTAMP,
更改为
jdbcype=DATETIME
,可以解决此问题。(MySql日期时间类型支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”


参考资料:

谢谢你的帮助。我发现我误解了java日期。因此,我生成了一个错误的日期。谢谢你的帮助。我发现我误解了java日期。因此,我生成了一个错误的日期。