[Seasar-user:9428] Re: [S2Dao] Javaのデータ型のプロパティでの検索結果について

Hirotaka HONMA [E-MAIL ADDRESS DELETED]
2007年 7月 25日 (水) 15:47:16 JST


本間@茅場町です。

on 25 Jul 2007 15:21:59 +0900
in [Seasar-user:9426] [S2Dao] Javaのデータ型のプロパティでの検索結果について
山下 真里 <[E-MAIL ADDRESS DELETED]> wrote:

> MySQLのDate型のカラムに対して、
> JavaのDate型で検索した場合に、1件以上ヒットするデータが
> データを取得できませんでした。
> ログに出力されているSQLを利用して、コマンドラインから
> SQLを流してみると、1件以上ヒットしてデータが取得されます。

selectDaysBetweenの引数に渡しているjava.util.Dateが、時分秒
ミリ秒の値を持っているのでは? と推測します。
(データベース側は「年月日」なのに、WHERE句は「年月日時分秒ミ
リ秒」であるため、WHEREがヒットしないのかと。)

引数daysの、時分秒ミリ秒の値をゼロにして頂けますか?

  final Calendar c = Calendar.getInstance();
  c.clear();
  c.set(Calendar.YEAR, 2007);
  c.set(Calendar.MONTH, Calendar.JULY);
  c.set(Calendar.DAY_OF_MONTH, 25);
  final Date days = c.getTime(); // このdaysをselectDaysBetweenに渡す

よろしくお願いします。

> 私の理解が不足しるのかと思いますが、トレースログに出力されている
> SQLと実際に、実行されているSQL文は一緒なのでしょうか?

ログに出力しているSQL文は人間が目で見て確認するためのもの
で、実際に発行されるSQL文とは違うものです。

実際には、

  SELECT control.rd, control.days, control.rnum FROM control WHERE days = ?

というSQL文からPreparedStatementを構築し、"?"へ引数daysをバ
インドする、という動作をしています。




Seasar-user メーリングリストの案内