2012-09-15 98 views
1

我在MySQL服務器中有一個名爲Caller_List的表。在這個表中,我有一個名爲call_date的日期列,其數據類型是Date。我創建了一個網頁,其中包含從1天到1天(存儲所有第1到31天)的SELECT框,月份的SELECT框(其中存儲從1月到12月的所有月份名稱),SELECT其中二零零零年至2012年各年的存儲位置。就像我也有to_day,TO_MONTH和TO_YEAR一個選擇框。Java日期格式

問題是,當我取回這些天,月,年使用的request.getParameter的Java Servlet()方法,它被提取爲字符串數據類型並存儲在一個名爲from_date和to_date的變量中,我將from_day,from_month和from_year連接在一起,並存儲在名爲from_date的變量中,並將to_day,to_month和to_year連接起來並存儲到to_date中, MySQL自從明白這種格式以後的格式是年月日。

我然後通過下面的查詢檢索這兩個FROM_DATE和兩個日期之間的數據:

select caller_name,call_date 
from Caller_List 
where call_date>='"+from_date+"' and call_date<='"+to_date+"' 

我也嘗試下面的查詢,卻徒勞無功:

select caller_name,call_date 
from Caller_List 
where call_date between '"+from_date+"' and '"+to_date+"' 

我也才知道,在執行查詢之前,我需要將from_date和to_date轉換爲日期格式。但我是java的新手,我不知道該怎麼做。另外我想要格式年月日的日期。我想顯示時間和日期,請幫助我!

+2

使用PreparedStatement和傳遞日期爲java.sql.Date' –

+1

的'實例在先進的日期選擇器的日子裏,任何具體原因的日期每個部分的一個選擇框? – Vikdor

+3

繼@ a_horse_with_no_name的建議,使用SimpleDateFormat的解析您的日期字符串到日期的情況。還要注意,使用PreparedStatement不會很方便使用類型的Date值,它還可以避免當前代碼易受攻擊的SQL注入攻擊*。 – jtahlborn

回答

0

如果你只是想知道如何將一個字符串解析Java中的日期,你可以簡單地使用SimpleDateFormat類。

final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 
try { 
    final Date fromDate = dateFormat.parse(from_date); 
} catch (ParseException e) { 
    // ... 
} 

假設您的from_date字符串看起來像2012-09-16

如果你想顯示一個日期和時間。您也可以使用SimpleDateFormat

final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 
try { 
    final String displayDate = dateFormat.format(new Date()); 
} catch (ParseException e) { 
    // ... 
} 

displayDate應該看起來像2012-09-16 20:13:25

還有一件事,你可以在MySQL中比較字符串類型和日期類型。只要確保你的日期字符串有模式「yyyy-mm-dd hh:mm:ss」。當然,你應該使用preparedStatement。