2011-06-01 84 views
0

我已經在Java中編寫了以下函數。該函數通過執行查詢來返回當前時間戳。功能代碼如下:查詢在不同的操作系統上給出不同的輸出

private String getTimeStamp(){ 
    String timeStamp=null;  
    try{ 
     String strQuery="select current_timestamp"; 
     PreparedStatement pmtQuery=con.prepareStatement(strQuery); 
     ResultSet rsQuery=pmtQuery.executeQuery(); 
     rsQuery.next(); 
     timeStamp=rsQuery.getString(1); 
     JOptionPane.showMessageDialog(null, "Value of timeStamp : "+timeStamp); 
    }catch(SQLException e){ 
     System.out.println("SQL Exception in the getTimeStamp()"); 
    }  
    return timeStamp; 
} 

當我在windows上使用這個函數它給出了正確的輸出和工作正常。例如,

如果在widows中執行上面的函數,它會給出如ex的時間戳。 2011-06-01 17點05分03秒

,但是當我在linux下Debina執行此功能,它提供了時間戳 2011-06-01 17:05:03.0

其追加1.0到時間戳

請指導我這個問題

 
1.why such different output comes on different system? 

2.How to avoid this problem? 

3.How to solve this problem? 

我使用以下配置

窗口

Windows 7中,Mysql數據庫,Java 6的

的Linux

Debian的Linux操作系統,MySQL數據庫,Java 6的

謝謝!

+1

嘗試檢索參數作爲日期而不是字符串。 – mdrg 2011-06-01 11:56:32

回答

2

使用此

SELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y %hh%mm%ss') 

注:

我不知道爲什麼要查詢得到的currentdate

+0

+1。 :-D – 2011-06-01 12:15:11

+0

爲什麼?最終從數據庫服務器獲取當前日期和**時間**(而不是當前的系統日期)。或者只是一個測試/顯示問題的例子。 – 2011-06-01 12:38:15

0

這不是便攜式的,但你可以使用DATE_FORMAT功能:

SELECT DATE_FORMAT(CURRENT_TIMESTAMP, '%d/%m/%Y %h:%i:%s'); 

文檔是here

0

你也可以使用

SimpleDateFormat 

它是一種簡單的日期格式。

1

問題可能是JDBC驅動程序的不同(默認)設置。如/如果需要的話(例如,使用SimpleDateFormatString.format

import java.sql.Timestamp; 
... 
Timestamp timeStamp; 
... 
timeStamp = rsQuery.getTimestamp(1); 

這樣,您就可以控制它在Java代碼格式:

我寧願獲取時間戳爲Timestamp(的java.util.Date子類) 。