一般Java代碼中使用的Date都是java.util.Date;而原生jdbc中的PreparedStatement類型的setDate() 方法要求 java.sql.Date;所以開發工具會提示你要做類型轉換,不知道有坑的人多半跟我一樣直接點擊工具提示進行解決,就變成了這樣
ps.setDate(15,(java.sql.Date)createTime);
錯誤發生回頭調試的時候才發現時間轉換這裏是有問題的,正確做法如下:
ps.setDate(15,new java.sql.Date(createTime.getTime()));
說一下爲啥會出現這種情況,由於java.sql.Date是繼承於java.util.Date的,子類轉父類是不允許的,而java.sql.Date的構造函數只提供了參數爲long的,所以還要把createTime轉成long,而Java也提供了getTime()方法用於轉換,所以就變成了下面正確的做法。即使如此,由於java.sql.Date是不包含時分秒的也會造成時分秒數據的丟失。