1

MySQLサーバーにCaller_Listというテーブルがあります。このテーブルには、データ型がDateであるcall_dateという単一の日付列があります。from_dayのSELECTボックス(1日から31日までのすべてが保存される)、月のSELECTボックス(1月から12月までのすべての月の名前が保存される)、年のSELECTボックス( 2000年から2012年までのすべての年が保存されます。私と同じように、to_day、to_month、to_yearのSELECTボックスもあります。

問題は、 request.getParameter()メソッドを使用してJavaサーブレットからこれらの日、月、年をフェッチすると、文字列データ型としてフェッチされ、from_dateおよびto_dateという変数に格納されることです。from_day、from_month、from_yearを連結し、from_dateという変数に格納します。また、to_day、to_month、to_yearを連結し、to_dateに格納します。MySQLはこの形式を理解しているので、私はそれらを年-月-日の形式で連結します。

次に、次のクエリを渡して、これら2つのfrom_dateと2つの日付の間のデータを取得します。

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の初心者であり、その方法がわかりません。また、年-月-日付の形式で日付が必要です。時刻と日付を表示したいのですが、助けてください!

4

1 に答える 1

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ます。

もう1つ、MySQLで文字列型と日付型を比較できます。日付文字列のパターンが「yyyy-mm-ddhh:mm:ss」であることを確認してください。もちろん、preparedStatementを使用する必要があります。

于 2012-09-15T23:42:22.930 に答える