MySQL 是常用的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),而 Java 是一種廣泛使用的編程語言,兩者在時間上存在巨大的差距,即 MySQL 的時間戳是格林威治標(biāo)準(zhǔn)時間(GMT),Java 的時間戳是本地時區(qū)時間。
// 獲取當(dāng)前時間 Calendar cal = Calendar.getInstance(); long javaTime = cal.getTimeInMillis(); System.out.println("Java Time: " + javaTime); // 使用 MySQL DATETIME 類型保存當(dāng)前時間 String sql = "INSERT INTO table_name (datetime_column) VALUES (UTC_TIMESTAMP())"; Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); // 計算差距 String query = "SELECT UNIX_TIMESTAMP(datetime_column) AS mysqlTime FROM table_name ORDER BY id DESC LIMIT 1"; ResultSet rs = stmt.executeQuery(query); rs.next(); long mysqlTime = rs.getLong("mysqlTime") * 1000L; // 轉(zhuǎn)換為毫秒 System.out.println("MySQL Time: " + mysqlTime); long diff = mysqlTime - javaTime; System.out.println("Time difference: " + diff / 1000 / 60 / 60 + " hours"); // 轉(zhuǎn)換為小時
上述代碼演示了如何在 Java 中獲取當(dāng)前時間并將其保存在 MySQL 中,然后計算兩者之間的時間差。需要注意的是,MySQL 中的時間戳使用的是 GMT,因此我們需要將其轉(zhuǎn)換為毫秒后再與本地時間戳進(jìn)行比較。