生活随笔
收集整理的這篇文章主要介紹了
mysql插入timeStamp类型数据时间相差8小时的解决办法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以管理員身份登陸mysql?執行以下語句
?
mysql?>?SET?time_zone?=?'+8:00';???#?此為北京時,我們所在東8區
???mysql>?flush?privileges;???#?立即生效
這樣就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
?
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小时的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。