2013-10-10 38 views
2

我運行下面的查詢來獲得的兩次檢索MySQL的時間在Java中

時間差
resultSet = statement.executeQuery("SELECT TIMEDIFF('14:03:55.256', '14:02:51.780') AS td"); 

MySQL允許這種格式的時間差

00:01:03.476 

但兩者 resultSet.getTime("td");resultSet.getObject("td");
返回00:01:03

根據文檔getTime(String string)以Java編程語言中的java.sql.Time對象的形式檢索此ResultSet對象的當前行中指定列的值。

java.sql.Time對應於SQL TIME,幷包含有關小時,分鐘,秒和毫秒。那麼信息爲什麼我收到00:01:03代替00:01:03:476

我基本上想要的是將00:01:03.476存儲到字符串中。有沒有解決辦法,或者我做錯了?

+0

你試過'resultSet.getString(「td」)'? – Stephan

+0

@Stephan:是的,但它會拋出'java.sql.SQLException:錯誤格式爲時間'00:01:03.476'在第1列' – jayantS

回答

3

如果你被打印出來注意到java.sql.Time.toString()只返回格式的字符串hh:mm:ss

你真的應該使用rs.getTimestamp這將返回一個java.sql.Timestamp

+0

我正在驗證結果'System.out.println(resultSet.getTime(「 td「))'和'resultSet.getTimestamp()'throws'java.sql.SQLException:無法將值'00:01:03.476'從列1轉換爲TIMESTAMP.' – jayantS

+0

試試這個然後'new Timestamp(resultSet.getTime 「TD」)。的getTime())'。請注意,通過將生成的時間對象包裝到println中,會調用'toString()'。 –

+0

它正在返回'1970-01-01 00:01:03.0'。問題在於'resultSet.getTime(「td」)'本身返回'00:01:03',因此''getTime()'只是增加了0 ms。 – jayantS

2

嘗試這樣做驗證結果:

String s = new SimpleDateFormat("HH.mm.ss.SSS").format(t.getTime()); 

其中t是您的java.sql.Time類型的變量。

希望這會解決你的問題。

+0

爲我工作:) –

+0

但它不起作用,如果列值爲NULL,則拋出空指針異常 –

+0

@ParagJadhav如果您的列接受空值,您必須在代碼中處理空值。如果空值不受歡迎並且您可以修改數據庫,請將列標記爲非空。 – Mindwin