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