java.sql.Date插入mysql时分秒丢失

9 篇文章 0 订阅
6 篇文章 0 订阅

需要mysql批量插入数据库中有时间字段一开始使用的是java.sql.Date

在这里插入图片描述
在这里插入图片描述

数据库的时分秒走丢了 调式看看

在这里插入图片描述

debug看还是有时分秒的

再此之前需要明白两件事,数据库中日期类型是java.sql.Date,java代码中日期类型为java.util.Date,两者不同,显然涉及到转换的问题。
再者,为了标准化,java.sql.Date类型的数据写进数据库会将时分秒截取,这也是大部分人发现后台数据库时分秒不见的原因。

java.sql.Date 只存储日期数据不存储时间数据

// 会丢失时间数据
preparedStatement.setDate(1, new java.sql.Date(date.getTime())); 
//可以这样来处理 
preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime())); 
//想要得到完整的数据,包括日期和时间,可以这样 
java.util.Date d = resultSet.getTimestamp(1); 
//这样处理更合适一些,可以避免一些潜在Timestamp 问题 
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime()); 

在这里插入图片描述
代码改成这样
在这里插入图片描述
就达到了自己想要的效果

自己补的话 :

 往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date对象的long值,
 再以这个long值 构造一个Timestamp对象 存进数据库中。 
 从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,
 再以这个long值构造一个 java.util.Date对象,这样就可以对这个Date对象操作了。
 不如说 new SimpleTimeFormat("yyyyy-MM-dd HH:mm:ss").format()等等 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想要一百块

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值