mysql 读date类型_【mysql读出Date类型出现格式错误】

错误表现:

当mysql的date类型或者datetime类型对应的字段值为‘0000-00-00’或‘0000-00-00 00:00:00’时

错误原因分析:

由于本地mysql未对my.ini文件进行配置

在后台进行数据库链接时,发现连接时区出现了错误

在spring环境搭建下的JSON对实体进行格式转换时,出现了错误

解决方案:

原因1解决方案:相关链接

方案一:(通过SQL修改 mysql变量赋值    https://www.cnblogs.com/EasonJim/p/7966918.html)

show variables like '%time_zone%';set global time_zone = ‘+8:00’;

方案二:(通过my.ini配置)

28b208b6848044d9f8a95429e7af9b0f.png

#mysql相关配置 相关链接:https://www.cnblogs.com/gne-hwz/p/9720519.html

[client]

port=3306

[mysql]

no-beep

# default-character-set=

[mysqld]

port=3306

# mysql根目录

basedir="D:\AppServ\mysql5.7\"

# 放所有数据库的data目录

datadir=D:\AppServ\mysql5.7\data

# character-set-server=

# 默认存储引擎innoDB

default-storage-engine=INNODB

# Set the SQL mode to strict

sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

#日志输出为文件

log-output=FILE

# 是否开启sql执行结果记录,必须要设置general_log_file参数,日志的路径地址

# 即日志跟踪,1为开启,0为关闭

general-log=0

general_log_file="execute_sql_result.log"

# 配置慢查询,5.7版本默认为1

slow-query-log=1

slow_query_log_file="user-slow.log"

long_query_time=10

#默认不开启二进制日志

#log-bin=mysql-log

#错误信息文件设置,会将错误信息放在data/mysql.err文件下

log-error=mysql.err

# Server Id.数据库服务器id,这个id用来在主从服务器中标记唯一mysql服务器

server-id=1

#lower_case_table_names: 此参数不可以动态修改,必须重启数据库

#lower_case_table_names = 1  表名存储在磁盘是小写的,但是比较的时候是不区分大小写

#lower_case_table_names=0  表名存储为给定的大小和比较是区分大小写的

#lower_case_table_names=2, 表名存储为给定的大小写但是比较的时候是小写的

lower_case_table_names=1

#限制数据的导入导出都只能在Uploads文件中操作,这个是在sql语句上的限制。

#secure-file-priv="D:\AppServ\mysql-5.7.23/Uploads"

#值为null ,也就是注释掉这个参数或者secure-file-priv=null。表示限制mysqld 不允许导入|导出

#值为/tmp/ ,即secure-file-priv="/tmp/" 表示限制mysqld 的导入|导出只能发生在/tmp/目录下

#没有具体值时,即secure-file-priv= 表示不对mysqld 的导入|导出做限制

# 最大连接数

max_connections=151

# 打开表的最大缓存数

table_open_cache=2000

# tmp_table_size 控制内存临时表的最大值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定

tmp_table_size=16M

# 每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,

# 如果线程缓存中有空闲线程,这时候如果建立新连接,MYSQL就会很快的响应连接请求。

# 最大缓存线程数量

thread_cache_size=10

原因2解决方案:相关链接

url=jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&useSSL=false

原因3解决方案:

@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")

解决方案二:通过配置类进行设置,设置如下

step 1 : 设置定制器

public class FastJsonHttpMessageConverterEx extendsFastJsonHttpMessageConverter {publicFastJsonHttpMessageConverterEx() {//配置 fastjson 特性

FastJsonConfig fastJsonConfig = newFastJsonConfig();

fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss"); //自定义时间格式

fastJsonConfig.setSerializerFeatures(SerializerFeature.WriteMapNullValue); //正常转换 null 值

this.setFastJsonConfig(fastJsonConfig);

}

@Overrideprotected boolean supports(Class>clazz) {return super.supports(clazz);

}

}

step 2:在配置类添加该Bean 相关链接

@BeanpublicFastJsonHttpMessageConverterEx fastJsonHttpMessageConverterEx() {return newFastJsonHttpMessageConverterEx();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值