数据库设计:
CREATE TABLE `update_info` (
`dev_num` varchar(180) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL DEFAULT '' COMMENT '号码',
`dev_soft_ver` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '升号',
`update_soft_ver` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '后号',
`create_time` datetime DEFAULT NULL COMMENT '升级开始时间',
`update_time` datetime DEFAULT NULL COMMENT '升级结束时间',
`update_status` tinyint(1) DEFAULT '0' COMMENT '"2":;"3":;',
PRIMARY KEY (`dev_num`),
UNIQUE KEY `dev_num` (`dev_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
java代码从mysql中获取时间发现多了一个.0 例如:2019-03-14 08:51:14.0这样的结构。
解决办法是通过MySQL DATE_FORMAT() 函数解决的,代码如下:
<select id="selectByDevNumListAndTimePage" resultMap="BaseResultMap">
select
dev_num, dev_soft_ver, update_soft_ver, update_status,
DATE_FORMAT(create_time, '%Y-%m-%d %k:%i:%s') as create_time,
DATE_FORMAT(update_time, '%Y-%m-%d %k:%i:%s') as update_time
from update_info
where dev_num IN
<foreach collection="list" item="list" open="(" separator="," close=")">
#{list}
</foreach>
<if test="devSoftVer != null and devSoftVer != ''">
AND dev_soft_ver LIKE CONCAT('%', #{devSoftVer}, '%')
</if>
<if test="startTime != null and startTime != ''and endTime != null and endTime != ''">
AND create_time between #{startTime} and #{endTime}
</if>
<if test="updateStatus != null" >
AND update_status = #{updateStatus,jdbcType=BIT}
</if>
<if test="pageHelper!=null">
<if test="pageHelper.sortBy!=null">
ORDER BY ${pageHelper.sortBy}
</if>
limit #{pageHelper.offset},#{pageHelper.pageSize}
</if>
</select>
核心代码:
DATE_FORMAT(create_time, '%Y-%m-%d %k:%i:%s') as create_time,
DATE_FORMAT(update_time, '%Y-%m-%d %k:%i:%s') as update_time