2012-08-27 52 views
3

我需要用日期和時間來更新記錄,但我很困惑,要麼使用sql server 2005的CURRENT_TIMESTAMP,要麼使用JAVA的日期對象,兩者都給出了相同的結果。SQL日期和時間和java日期和時間之間的區別以及應該使用哪些日期和時間?

例如:

select CURRENT_TIMESTAMP 

這將打印2012-08-27 14:30:17.193

低於這個java代碼也將做同樣的明顯,但有什麼區別。

  Date dNow = new Date(); 
      SimpleDateFormat ft = 
      new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss.SSS "); 

      System.out.println("Current Date: " + ft.format(dNow)); 

UPDATE:

我具有低於2 prepareStatement用於當我已經使用CURRENT_TIMESTAMP和用於我已經使用JAVA的日期對象的第二一個(日期對象讓它成爲要麼util.Date或sql.Date)。

語句1

pst = con.prepareStatement("insert into sLog(logUser, logType, logSystem, logTime) 
      values(?, ?, ?, CURRENT_TIMESTAMP)"); 
        pst.setString(1, logUser); 
        pst.setString(2, logType); 
        pst.setString(3, logSystem); 
        pst.executeUpdate(); 

語句2

pst = con.prepareStatement("insert into sLog(logUser, logType, logSystem, logTime) 
      values(?, ?, ?, ?)"); 
       pst.setString(1, logUser); 
       pst.setString(2, logType); 
       pst.setString(3, logSystem); 
       pst.setString(4, format(dNow)); 
       pst.executeUpdate(); 
+0

SQL Sever上的命令將爲您提供服務器所在時區的日期。但是如果你使用java中的那個,你可以指定時區(或者將其設置爲GMT)。 –

+0

@NaiduYpvs如果是這樣,我有場景的Java和SQL在哪裏,而我更新,如果最終用戶改變他的時間。它會更新最終用戶的時間還是什麼? –

+0

老實說,您應該使用GregorianCalendar,因爲您可以爲它設置時區格式。由於Java代碼在服務器上運行,它將採用服務器的默認時間格式。 –

回答

0

第一種方法直接使用SQL函數。它具有數據庫依賴性。第二種方法通過java方法,不能直接使用SQL函數。它沒有數據庫依賴性。如果你想使用便攜式代碼,使用第二種方法。

+0

我同意你的意見。但我的要求是,我插入的'Date and Time'不應該來自最終用戶計算機,因爲他/她會根據自己的個人需求更改時間,所以我將直接使用SQL函數。嘿,你有沒有別的替代方案? –

+0

@SathishKumarkk如果你的用戶不想改變數據庫,第一個選項是好的。 –

+0

你的意思是「用戶不想更改數據庫」。我無法讓你點正確。 –