4

同じテーブルに値をSELECT ... BETWEEN start_date AND end_date挿入するだけでなく、を実行する必要があるテーブルがあります。Date

私は次のようなものを読みました:

java.util.Date now = new java.util.Date();
pStmt.setDate( 1, new java.sql.Date( now.getTime() ) );
pStmt.setTimestamp( 2, new java.sql.Timestamp( now.getTime() ) );
pStmt.executeUpdate();

しかし、そのようなコードは現在の日付を設定または取得しますね。自分でカスタム日付を挿入して選択したい。

StackOverflowでも読んでいます:

SELECT *
FROM myTable
WHERE ( YEAR(myfield) = '2009')
  AND ( MONTH(myfield) = '1')

Dateフィールドを作成しString、それを使用StringTokenizerして日、月、または年の情報のみを抽出し、SELECTこのコードと同様に使用することもできますか?(私の最初の-そしてもっと単純な-アイデアが不可能な場合。)

したがって、これまで、2つの可能な解決策があります。また、アクセスされるデータベースは大量のデータを含むフェイルセーフ/クリティカルシステム(銀行)にあるため、どちらが高速であるかを知る必要があります。

4

1 に答える 1

4

日付関数を使用して値を操作できたので、最初のアプローチの方が優れています。

private void executeQuery(java.util.Date startDate, java.util.Date endDate) throws SQLException {
  Connection conn = null;
  PreparedStatement pstmt = null;
  try {
    conn = getConnection();
    String query = "select ... between ? and ?";
    pstmt = conn.prepareStatement(query);
    pstmt.setDate(1, new java.sql.Date(startDate.getTime()));
    pstmt.setDate(2, new java.sql.Date(endDate.getTime()));
    //return results
    ResultSet rs = pstmt.executeQuery();
    rs.last();
    System.out.println("last row = " + rs.getRow());
  } finally {
    if (pstmt != null) {
      pstmt.close();
    }
    if (conn != null) {
      conn.close();
    }
  }
}
于 2012-11-13T17:56:02.197 に答える