2012-03-30 14 views
0

私はサプライヤーのデータベースを持っており、車を借りています。ほとんどの人は2〜3日の範囲で賃貸します。データベース上の 私はdatetime形式として格納されている賃借開始日時を持っています。賃料終了日も日付時刻形式です。Java比較日

は、日付の要求された範囲は、車はすでに貸し出された日付の範囲のいずれかに該当する場合、誰かが、同じ車を借りたいと仮定 - 私は状況を確認することができますか?私はjspページでbean、servlets、jstlを使用しています。

私はそれは、コンパレータなる必要がありますね?

答えて

4

あなたはJavaで比較を行っている場合は、java.util.DateクラスがすでにComparableを実装していますので、ちょうどそのcompareTo()メソッドを使用することができます。しかし、おそらくSQLで<>の演算子を使用してデータベース内の比較を行うこともできます。

また、2つの日付範囲を比較して、互いに重複していないかどうかを確認できるSQLオーバーラップ機能もあります。データベースがそれをサポートしていれば、それはおそらくより単純で効率的です。例えば

、あなたのテーブルは、「予約」と呼ばれている想定し、あなたができる:

SELECT id FROM reservations 
WHERE (DATE '2012-03-29', DATE '2010-04-01') OVERLAPS (start_date, stop_date) 
    AND car_id = 12345; 

そして、それが行を返す場合、それはその日付の範囲と競合車12345の予約がすでにありますを意味します。

+0

compareto()メソッドの任意の良いリソースへのリンクを私に提供することができます – Parvesh

+1

[Date'クラスのオラクルのドキュメント](http://docs.oracle.com/javase/7/docs/api /java/util/Date.html#compareTo%28java.util.Date%29)? Java開発を行っている場合は、すでにそのサイトをブックマークしておく必要があります。 – Wyzard