0

タイムスタンプが指定された 2 つのタイムスタンプの間にある行を選択する SQL ステートメントを取得しようとしています。これが私が試したものです。(これは Java サーブレット上にあり、Java タイムスタンプ オブジェクト

SELECT * FROM dates WHERE dateAvailable >= " + from.toString() + " AND dateAvailable <= " + to.toString();

from と to はタイムスタンプ オブジェクトです。これにより、ステートメントを準備しようとすると構文エラーが発生します。助けてください

4

2 に答える 2

4

JDBC には、このための組み込み型があります。使用する

PreparedStatement ps = con.prepareStatement(
              "SELECT * FROM dates WHERE dateAvailable BETWEEN ? AND ?"); 
ps.setTimestamp(1, from);
ps.setTimestamp(2, to);

?2 つのプレースホルダーを指定します。これらをTimeStamp要素に設定できます。

すぐにはわからない可能性があるため、使用する目的の 1 つPreparedStatementは、SQL インジェクションの防止に役立つことです。詳細については、こちらの回答をお読みください。


あなたが機能しなかった理由はTimestamp#toString()、SQL で機能しない特定の形式を持っているためです。

于 2013-10-10T18:15:53.207 に答える
-1

DATE関数を使用する必要があります。そうしないと、とにかく奇妙な副作用が発生します。

于 2013-10-10T18:16:44.507 に答える