如何使用 JDBC 在資料庫中插入當前日期和時間?


MySQL 資料庫中的 timestamp 資料型別儲存日期、月份、年份、小時、分鐘、秒和分數秒。使用它,您可以同時表示日期和時間。

在使用 JDBC 時,有兩種方法可以插入/獲取當前時間戳值。

  • 使用資料庫的日期預設值。

  • 使用日曆類的 getTime() 方法。

資料庫預設值

建立一個名為 sample 的表,以使用以下查詢在 MySQL 資料庫中儲存時間戳

CREATE TABLE Sample(Id INT, Current_Time_Stamp TimeStamp);

現在,如下所示描述表

+--------------------+-----------+------+-----+-------------------+
| Field              | Type      | Null | Key | Default           |
+--------------------+-----------+------+-----+-------------------+
| Id                 | int(11)   | YES  |     | NULL              |
| Current_Time_Stamp | timestamp | NO   |     | CURRENT_TIMESTAMP |
+--------------------+-----------+------+-----+-------------------+

如果您觀察到,時間戳的預設值為系統當前時間戳。也就是說,如果您不向此列傳遞任何值,則預設情況下它將填充當前時間戳值。

因此,在使用 JDBC 程式將值插入具有時間戳的表時,在 Prepared 語句中保留時間戳列,或者簡單地使用 CURRENT_TIMESTAMP 代替佔位符 ?,這將填充當前時間戳值。

示例

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class InsertingCurrentTime {
   public static void main(String args[])throws Exception {
      //Getting the connection
      String mysqlUrl = "jdbc:mysql:///sampleDB";
      Connection con = DriverManager.getConnection(mysqlUrl, "root", "password");
      System.out.println("Connection established......");
      //Inserting values to a table

      String query = "INSERT INTO sample(ID, Current_Time_Stamp)
      VALUES (?, CURRENT_TIMESTAMP)";

      PreparedStatement pstmt = con.prepareStatement(query);
      pstmt.setInt(1, 1);
      pstmt.execute();
      System.out.println("Data inserted......");
   }
}

輸出

Data inserted......

如果您觀察表的內容,您可以看到它包含當前時間戳值,如下所示

+------+---------------------+
| Id   | Current_Time_Stamp  |
+------+---------------------+
| 1    | 2019-02-27 17:18:17 |
+------+---------------------+

Calendar 類的 getTime() 方法

Calendar 類的 getTime() 方法返回一個 Date 類的物件,該物件儲存日曆的當前時間值。

Calendar calendar = Calendar.getInstance();
java.util.Date currentTime = calendar.getTime();

java.util.Date 類還提供了一個名為 getTime() 的方法,此方法返回一個 long 型別變數,該變量表示從標準紀元時間(自 1970 年 1 月 1 日 00:00:00 GMT 起)到此物件的當前時間值的毫秒數。

long time = currentTime.getTime();

現在,將獲得的 當前時間 值作為引數傳遞給 setTimedtamp() 方法,其中另一個引數將是佔位符 ? 的引數索引整數,您需要在此處設定當前時間戳值。

pstmt.setTimestamp(2, new Timestamp(time));

更新於: 2019 年 7 月 30 日

6K+ 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.