2014-10-07 57 views
-2

我正在更新日期在Oracle 11 g使用JDBC爲此我讀取日期在一個文件和更新日期數據庫中的日期,在最後一些日期正確更新,而某些日期更新到未來日期(日期在2015/2016)。即使文件不能包含大於sysdate的日期。當我更新它正確打印之前打印日期,但是當我在數據庫檢查顯示錯誤的日期。我現在用下面的查詢更新到數據庫中的錯誤未來日期

update data set IBOOLEAN1=?,LASTACTIVITYDATE=?,OPENDATE=? where SEMAIL=? and SEGMENTNAME='EDU' 
    prepareStatement.setInt(1, 1); 
    DateFormat dFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); 
    Date openDate = dFormat.parse(oldStringDate); 
    timeStm = new Timestamp(newDate.getTime()); 
    prepareStatement.setTimestamp(2, timeStm); 
    prepareStatement.setTimestamp(3, timeStm); 
    prepareStatement.setString(4, emailAddress); 

能否請你幫我解決這個問題..?

+1

請你告訴我們,被插入一些輸入日期和價值? – 1010 2014-10-07 12:16:36

+0

在您的代碼中,您使用newDate作爲參數,但未在此代碼片段中定義。請添加更多的上下文。 – 1010 2014-10-08 11:45:15

回答

0

我不知道,因爲你需要提供更多的詳細信息,這樣可以解決問題,但這樣的:

SimpleDateFormat("MM/dd/yyyy hh:mm:ss");

不正確。因爲,MM表示MONTH NUMBER,並且時間部分中的MINUTES具有格式MI

更新新增測試用例

SQL> SELECT TO_CHAR(SYSDATE,'mm') mm, 
    2   TO_CHAR(SYSDATE,'mi') mi 
    3 FROM dual 
    4/

MM MI 
-- -- 
10 17 
+0

不,格式字符串看起來是正確的,請參閱:http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html – 1010 2014-10-07 16:20:08

+0

@ 1010,你能告訴我們'MM'格式怎麼樣用於「MINUTES」? AFAIK,'MM'是幾個月的格式掩碼,'MI'是幾分鐘。 SimpleDateFormat MM的 – 2014-10-07 17:04:56

+0

表示月份,mm表示分鐘(不是MI)。格式字符串位於java端 – 1010 2014-10-07 17:10:52