首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql插入timeStamp类型数据时间相差8小时的解决办法

mysql插入timeStamp类型数据时间相差8小时的解决办法

作者头像
张哥编程
发布2024-12-19 10:28:05
发布2024-12-19 10:28:05
57800
代码可运行
举报
文章被收录于专栏:云计算linux云计算linux
运行总次数:0
代码可运行

以管理员身份登陆mysql 执行以下语句

mysql > SET time_zone = '+8:00'; # 此为北京时,我们所在东8区

mysql> flush privileges; # 立即生效

mysql插入timeStamp类型数据时间相差8小时的解决办法_CTT
mysql插入timeStamp类型数据时间相差8小时的解决办法_CTT

这样就ok了,在让用户测试,发现问题已经解决了!!

如果做了上面的操作还没有生效的话,

请在my.cnf/my.ini的 [mysqld]下的第一行(和[mysqld]间不能有其他内容)中加上

default-time_zone = '+8:00'

然后重启mysql服务。

这种方式设置不管用,又找了一种方式

数据库时区没设置对,

serverTimezone=UTC或者GMT改成CTT(Asia&Shanghai)即可

完整的数据库url为:

spring.datasource.url=jdbc:mysql://127.0.0.1:3000/abc?useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT&zeroDateTimeBehavior=convertToNull&useSSL=false

代码语言:javascript
代码运行次数:0
运行
复制
package com.aaa.chapter08;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Created by 张晨光 on 2020/3/12 15:44
 */
public class JDBC84 {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动;
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获得连接对象
        String url="jdbc:mysql://localhost:3306/School?useTimezone=true&serverTimezone=CTT&useUnicode=true&characterEncoding=utf8&useSSL=false";
        String user="root";
        String password="root";
        Connection conn = DriverManager.getConnection(url, user, password);
        //3.获得预编译语句对象,这个案例是增删改,这时候有3个问号
        String sql="update student set age=?,pwd=?,birth=? where id=?";

        PreparedStatement pstmt = conn.prepareStatement(sql);
        //3.2给占位符赋值;这个知识点要求大家熟练掌握,C#String.format({0},{1})
        pstmt.setInt(1,111);
        pstmt.setString(2,"888999");
        //1.过期的方法;year-1900,month:0-11,day:13
        //pstmt.setDate(3,new java.sql.Date(2020-1900,2,13)); //设置日期格式
        //2.方法;
       // System.out.println(System.currentTimeMillis());  //当前时间的毫秒数;
//        pstmt.setDate(3,new java.sql.Date(System.currentTimeMillis()));系统时间;
        //pstmt.setDate(3,new java.sql.Date(System.currentTimeMillis()));
        Date dt=new Date();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date = sdf.format(dt);
        //用这种方式最不容易出错,直接是将时间按照指定的格式出来,然后设置成了字符串
        //不会有这个时区问题,时区问题java.sql.Date(值)有这个问题。
         pstmt.setString(3,date);  //这里直接是这种的。
        pstmt.setInt(4,7);
        //这里还是少8个小时,时区问题
        //3.3执行一下
        int result=pstmt.executeUpdate();
        System.out.println(result);
        //4.关闭资源;
        pstmt.close();
        conn.close();
    }
}
mysql插入timeStamp类型数据时间相差8小时的解决办法_mysql时差问题_02
mysql插入timeStamp类型数据时间相差8小时的解决办法_mysql时差问题_02
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档