4

我有一个表,我必须在其中执行 a 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类似于此代码的方式使用它们?(如果我的第一个 - 也是更简单的 - 想法是不可能的。)

所以到目前为止,有两种可能的解决方案。我还需要知道哪个更快,因为访问的数据库位于具有大量数据的故障安全/关键系统(银行)中。

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 回答