java 插入mysql date 时间不对

fp2001 2017-06-21 10:59:34
需要将时间插入到mysql中,其中mysql对应的字段属性为Date,java代码如下:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
java.sql.Date register = new java.sql.Date(sdf.parse(us.getregisterTime()).getTime());
java.sql.Date lastlogin = new java.sql.Date(sdf.parse(us.getLastLogin()).getTime());
System.out.println(lastlogin.toString());
psts2.setDate(5, register);
psts2.setDate(6, lastlogin);
} catch (ParseException e) {
e.printStackTrace();
}

要插入的时间是2017-06-21
System.out.println(lastlogin.toString()); 输出的也是正确的:2017-06-21
但是插入到数据库中后,时间成为2017-06-20,少了一天,register对应的时间也是少了一天
数据库的time_zone 是“+08:00”,CST
将字段改成Datetime也不行
那个地方出问题了?
...全文
2775 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_39936465 2020-02-25
  • 打赏
  • 举报
回复
引用 楼主 fp2001 的回复:
需要将时间插入到mysql中,其中mysql对应的字段属性为Date,java代码如下: 要插入的时间是2017-06-21 System.out.println(lastlogin.toString()); 输出的也是正确的:2017-06-21 但是插入到数据库中后,时间成为2017-06-20,少了一天,register对应的时间也是少了一天 数据库的time_zone 是“+08:00”,CST 将字段改成Datetime也不行 那个地方出问题了?
时区问题是java连接sql时设定的 jdbc:mysql://localhost:3306/database?serverTimezone=Asia/Shanghai
  • 打赏
  • 举报
回复
是因为时区问题,在连接串后面加上serverTimezone=CTT
intresting_ 2019-07-11
  • 打赏
  • 举报
回复
引用 17 楼 intresting_ 的回复:
在数据库连接后加 &serverTimezone=Asia/Shanghai 试试
时区问题,新版mysql默认UTC和我们差了13小时
intresting_ 2019-06-13
  • 打赏
  • 举报
回复
在数据库连接后加 &serverTimezone=Asia/Shanghai 试试
lj小君 2018-09-18
  • 打赏
  • 举报
回复
可以试试用jdk8 这个时间java.time.LocalDate
yuji_tt 2018-09-18
  • 打赏
  • 举报
回复
用simpleDateFormat类,在关联pattern
yu终ren未归 2018-09-18
  • 打赏
  • 举报
回复
这。。如果是要插入数据库的话。字符串就行了啊。。。
>>春风吹 2018-09-18
  • 打赏
  • 举报
回复
把数据库中格式改成timestamp试试, 像这样
>>春风吹 2018-09-18
  • 打赏
  • 举报
回复
刚刚图片没有发出去
月光倾城 2018-09-18
  • 打赏
  • 举报
回复
你用的mysql 是5.x版本的 还是 8.x版本的,8.x版本的.URL设置的时候还要设置时区 serverTimezone=UTC,这样的话日期就会隔一天,刚好我遇到了这个问题.你把 serverTimezone 的值改下,比如 serverTimezone=Asia/Shanghai;我用8.x版本的mysql连接数据库的时候都遇到好几个问题.比如 Driver,5.x版本的mysql 的Driver="com.mysql.jdbc.Driver";然而 8.x版本的mysql的Driver ="com.mysql.cj.jdbc.Driver";还有5.x版本的URL 不需要设置什么 时区,字符集,SSL ,rewriteBatchedStatements 等一系列问题.感觉变麻烦了
依然_范特西_ 2018-01-05
  • 打赏
  • 举报
回复
先转成“yyyy-MM-dd”字符串,再转成你的“yyyy-MM-dd”时间格式。
qing_chun_ 2018-01-05
  • 打赏
  • 举报
回复
看看,这个是否能解决你的问题。 https://www.jianshu.com/p/ea7ef2d29940
nikyotensai 2017-06-23
  • 打赏
  • 举报
回复
java.util.Date
110成成 2017-06-22
  • 打赏
  • 举报
回复
感觉是时区问题,你最好是将时间精确到小时,看下相差多少个小时,这样方便查出原因。
fp2001 2017-06-22
  • 打赏
  • 举报
回复
继续等。。。。
Huangmartin 2017-06-22
  • 打赏
  • 举报
回复
时间转换用util包
鲨鱼也是鱼 2017-06-22
  • 打赏
  • 举报
回复
你sql date 和util date转化的方式有问题,你可以查查这个2个是怎么相互转化的 ,总感觉你的转化太麻烦了
fp2001 2017-06-22
  • 打赏
  • 举报
回复
引用 3 楼 zc881124 的回复:
感觉是时区问题,你最好是将时间精确到小时,看下相差多少个小时,这样方便查出原因。
时区设置了cst,+08:00,也还是不行
fp2001 2017-06-21
  • 打赏
  • 举报
回复
自己顶,在线等

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧