插入和选择日期(Java)(MySQL)

插入和选择日期(Java)(MySQL),java,mysql,sql,date,jdbc,Java,Mysql,Sql,Date,Jdbc,我有一个表格,在那里我必须做一个选择。。。在开始日期和结束日期之间,以及在同一表格中插入日期值 我读过这样的书: 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(); 但是这种

我有一个表格,在那里我必须做一个
选择。。。在开始日期和结束日期之间,以及在同一表格中插入日期值

我读过这样的书:

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();
但是这种代码设置或获取当前日期,不是吗?我想自己插入和选择自定义日期

我也在这里读到:

是否也可以将
日期
字段设置为
字符串
,然后使用
字符串标记器
仅提取日期、月份或年份信息,并在类似于此代码的
选择中使用它们?(以防我的第一个更简单的想法不可能实现。)


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

第一种方法更好,因为您能够使用日期函数来操作值

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();
    }
  }
}

你说的定制日期是什么意思?你能给出一个具体的例子说明你想要什么(数据库中的开始日期和结束日期时间戳)?你的例子使用的是当前的日期/时间。如果这就是你想要的,让MySQL为你做吧,例如
NOW()
。如果没有,请告诉我们您所关注的日期范围。还要注意,
YEAR(myfield)
是该字段上的一个函数,mysql将无法使用索引快速获取数据。它必须选择已插入的日期,然后填充一个表以生成PDF(我使用的是iText)。我希望插入一个过去的日期,这样我的所有表都将根据相同的示例。关于第二个想法,我正在考虑:从表中选择*,其中(年(圣年)=?)和(月(圣月)=?)和(天(圣日)=?);(…)etc(…)字符串斜杠、数据、st_年、st_月、st_日;StringTokenizer st=新的StringTokenizer(斜杠“/”);数据=st.nextToken();天=数据;(…)等(…)好的。谢谢现在,日期字段的值(即,我必须输入日期,而不是使用当前日期)如何提供PreparedStatement?就像在“pStmt.setString(1,myString)”中一样。这就是我需要的-D谢谢你
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();
    }
  }
}