2012-03-13 21 views
2

私はカスタムのオンラインユーザーインターフェイスを作成しています。 JSPページには、カレンダー(JavaScriptで作成)から日付を選択し、イベントが発生する正確な時刻を指定できるフォームがあります。
日:2012-MAR-12
時間:午前7時00分、午後Java - mysqlに格納されている日付形式のデータを比較するdb - どのように?

私のサーブレットは、このように見ていることになりますこれは、フォームデータを読み込み

日時は、mysqlデータベーステーブルに格納する必要があります。列をDATETIME型に設定しました。

私はその列の日付の値を '現在の日付+ 30分'と比較し、その条件を満たすイベントのみを表示したいと考えています。

1)フォームから送信された日付と時刻の文字列値をDATETIME値に変換してデータベースに格納するにはどうすればよいですか?

2)データベースの日付/時刻エントリを現在の日付と時刻と比較するにはどうすればよいですか?

答えて

2

文字列を日付に変換するには、SimpleDateFormatクラスを使用します。これには、文字列をさまざまな形式の日付に変換するためのメソッドが組み込まれています。例えば

SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MMM-dd"); 
    Date mydate = fmt.parse("2012-Mar-04", 0); 

今、あなたは、MySQLの日付と比較するMyDateに該当を使用することができます。

2番目の質問では、新しい日付をインスタンス化することで現在のシステム時間を取得できます。

Date now = new Date(); 

これを使用して、MySQLテーブルの日付と単純なSQL文を比較します。私はあなたがPreparedステートメントを使用していると仮定します。詐欺は、あなたの入力を解析するには...ように

+0

SimpleDateFormatの例のコードの最初のブロックは機能しません。比較のために現在の日付に30分程度を追加してデータベースエントリに追加するにはどうすればよいですか?私は時間だけでなく、日付を比較することができる必要があります...それは可能になるだろうか? – katura

+0

もちろん。私がリンクしているSimpleDateFormatドキュメントを見て、さまざまな方法で日付と時刻を指定するために作成できるパターンを確認してください。あなたはあなたに最も適した方法を選択します。多くの日付操作を行う必要がある場合は、java.util.Calendarまたはjoda time(http://joda-time.sourceforge.net/)に切り替えます。 –

+0

私は、JavaがDateというクラスにDateとTimeの両方を格納するのはちょっと混乱していることに同意します。あなたはそれに慣れることができます。 –

0

あなたの接続であり、

PreparedStatement currentEvents = con.prepareStatement("Select * from mytable where thedate = ?"); 
    currentEvents.setDate(1, mydate); 
    result = currentEvents.executeQuery(); 

、このコードを使用:あなたがあなたの日付を持っていたら、あなたは経由で直接それを使用することができ

String dateInput = "2012-MAR-12"; 
String timeInput = "7:00 p.m."; 

SimpleDateFormat f = new SimpleDateFormat("yyyy-MMM-ddh:mm a"); 
String s = dateInput + timeInput.replace(".", ""); // must remove the dots 
Date d = f.parse(s); 

をJDBC。私はあなたの質問にすべての日付比較を行います。私はあなたがやろうとしているものを理解しますが、このような何かをしようとしません。

select * from table where datetime_col between ? and adddate(?, interval 30 minutes) 

があなたのJDBC呼び出しにパラメータとして2回に分けてデータオブジェクトを渡します。

関連する問題