2017-05-20 25 views
0

你好,我有一些問題來自接入database。這ploting短日期欄(「出生日期」)時是ploting當我的代碼:Ploting日期在Java和SQL

ResultSet rs2=statement.executeQuery("SELECT * FROM CITAS WHERE PACIENTE Like '"+user+"' "); 
if(rs2.next()){ 
toClient1.println("<p>Su cita es: "+rs2.getString("FECHA")+" "+rs2.getString("HORA")+"</p>"); 

當我這樣做,我得到這是一個結果:

2017年5月22日00:00:00.000000 9

如何擺脫那些0的?

+0

你希望得到什麼? –

+0

您是否嘗試使用getDate? –

+0

只有2017-05-22? –

回答

2

使用SimpleDateFormat格式化日期在Java

DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
df.format(rs.getDate("FECHA")); 
+0

你是不是指'yyyy-MM-dd' :) –

+0

df會是日期對象還是String? – 19mike95

+0

df是SimpleDateFormat實例 –

1

首先,你應該檢查你的Access數據庫是否已經得到了兩個日期(出生日期)和時間(霍拉)數據類型,因此donesn't必須表格中有兩個獨立的字段。

接下來,您應該檢查您是否擁有或可以獲得足夠新的JDBC驅動程序,以便它可以使用更新的java.time類。如果是這樣,請使用rs2.getObject()從結果集中獲取這樣一個對象。我沒有經驗來告訴你究竟哪種類型,但一旦你發現,它應該比你所擁有的字符串和Nitin Prabhu在another answer中建議的對象更容易處理。

最後,如果一切順利,請使用DateTimeFormatter或兩個將對象從數據庫格式化爲用戶需要的格式。例如,您可以使用DateTimeFormatter.ISO_LOCAL_DATE來獲得yyyy-MM-dd

1

TL;博士

"2017-05-22 00:00:00.000000 9".substring(0 , 10) 

......或者......

myResultSet.getObject("FECHA" , LocalDate.class) 

String::substring

提取你想要的字符。致電String::substring。令人煩惱的是,該方法的參數是從零開始的索引號。

String output = "2017-05-22 00:00:00.000000 9".substring(0 , 10) ; 

2017年5月22日

看到這個code run live at IdeOne.com

使用對象,而不是字符串

當與數據庫進行數據交換,你應該使用對象,而不是單純的字符串。對於日期時間值,使用從日期時間類實例化的日期時間對象。

你不記錄你的表的性質。如果FECHA是僅限日期的類型,並且您的JDBC driver支持JDBC 4.2,則可以直接使用java.time類型。見Answer by Ole V.V.

例子:

LocalDate ld = myResultSet.getObject("FECHA" , LocalDate.class) ;