1.问题描述
使用的是MYSQL
数据库,在查询过程中一个日期字段始终查询出来的和数据存储的值不一致。数据库存储的数据
以及数据结构
如下:
name | current_time |
---|---|
任务编号 | 2021-09-22 11:31:13 |
查询出来的数据是:
name=任务编号, currentTime=Thu Jan 01 11:31:13 CST 1970
这个currentTime
的数据怎么也对不上,时间是对的但是日期却是从1970年01月01日
开始的。XML
中查询的SQL
语句如下:
<select id="select" parameterType="string" resultType="xxx">
SELECT
name AS name,
current_time AS currentTime
FROM t_number
WHERE id = #{id, jdbcType=VARCHAR}
</select>
就是一个普通的单表查询,将上述XML文件中的SQL拷贝到数据库执行,结果如下:
SELECT
name AS name,
current_time AS currentTime
FROM t_number
WHERE id = 'RWBH'
-------查询结果-----------
任务编号 11:35:23
也是一样的结果。
2.问题原因
这个原因很难排查,也上网查询过设置数据库时区
,使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
注解,都没用。
通过我把SQL
拷贝到数据库进行执行我发现结果是一致的,我在想是不是字段出现问题了,结果我发现XML写的SQL语句中current_time
字段的颜色和其他的字段颜色不一致,我确信就是字段名称出现了问题:
原来current_time
字段是MYSQL
中的关键字是一个函数,如下:
所以在查询的时候,返回的结果不是数据库中存储的数据,而是current_time
这个MYSQL
自带的函数的结果。
淦~
3.问题解决
将current_time
字段换成其它的即可。换成current_times
:
name | current_times |
---|---|
任务编号 | 2021-09-22 11:31:13 |
出现出来的数据是:
name=任务编号, currentTimes=Sat Sep 25 00:38:02 CST 2021
解决!这个问题吧,都不算个坑,但是如果不小心,也足够让我们摔个大跟头了~