1. 程式人生 > >在Java中對mysql資料庫插入datetime型別資料

在Java中對mysql資料庫插入datetime型別資料

最近在做一個簡單的考勤系統的時候碰到了一個弄了我好久的問題,在我往資料庫中更新一條簽到時間的記錄的時候,我獲取的時間是沒有錯的,但是Hibernate往資料庫裡面插入的時候資料的時候,控制檯報了一大堆錯誤,而資料庫裡面也是沒有任何資料被更新的。。這就引發了異常Debug~~
我資料庫裡面定義的欄位是這樣的:
欄位名 :punch_time 欄位型別:datetime
然後我往資料庫插入的資料是這樣的

Date date=new Date();     //獲取一個Date物件
 DateFormat simpleDateFormat= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"
); //建立一個格式化日期物件 String punchTime = simpleDateFormat.format(date); //格式化後的時間

這個時間得到的時間物件確實是 “yyyy-MM-dd HH:mm:ss“,也就是我們常見的例如”2016-12-20 15:00:00“樣的日期物件,然後我覺得程式執行下去沒有事,然後控制檯就開始報錯了,因為在實體類中設定欄位punch_time是使用的java.util.Date型別,然後我傳過去自然就是錯誤的。然後我決定不用格式化後的時間去,我直接傳一個new Date()物件進去,結果是肯定的,直接拋異常。

在Mysql資料庫中日期跟時間的我知道有兩種,一種是date

型別,還有一種是datetime型別,date型別也就是我們常見的儲存yyyy-MM-dd型別的日期,它不能儲存時間,也就是隻能儲存日期,另外一種dateitme自然就是又可以儲存日期同時也可以儲存時間,不過是連在一起的,也就是我需要的目標型別。查詢Mysql手冊中連線 datetime可以儲存1000-01-019999-12-31的日期,

這個時候我又想起以前在寫JDBC程式碼的時候好像也碰過這個問題,也是在定義實體類物件的時候也是被 java.util.Date物件跟 java.sql.Date物件搞混了,無奈只好去谷歌上搜索下怎麼樣處理比較好,但是搜出來的都是比較的中國化結果,大部分都是你抄我的我抄你的,往下翻,在CSDN上博主名為dongdong9223

有一篇部落格是介紹關於Java中對資料庫插入datetime型別的資料,閱讀後可以提取出兩行核心程式碼,就是使用Timestamp物件,程式碼如下:

  java.util.Date date = new java.util.Date();          // 獲取一個Date物件
            Timestamp timeStamp = new Timestamp(date.getTime());     //   講日期時間轉換為資料庫中的timestamp型別

使用這兩行程式碼轉換時間後,我們就可以往資料庫插入”yyyy-MM-dd HH:mm:ss“型別,通過Intellij IDEA檢視繼承關係,我們可以發現Timestamp物件也是繼承了Date
這裡寫圖片描述