我按照生日(birthday)来查找。可是这是日期格式的,我就不会操作了。
下面是我的java程序:package sqltest;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Date;import sqltest1.InputData;public class SqlTest {
public static String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
public static String dbURL="jdbc:sqlserver://localhost:1433;DatabaseName=test";
public static String userName="sa";
public static String userPwd="123";
public static void main(String[] args) throws Exception {
Connection conn=null;
PreparedStatement pstmt=null;
ResultSet result=null; 
Class.forName(driverName);
conn=DriverManager.getConnection(dbURL,userName,userPwd);
String sql="select pid,name,age,birthday,salary from person where birthday like ?";//name like ? or 
pstmt=conn.prepareStatement(sql);
// String key1="xiaolong";    如果是字符串类型或是整型的,我会操作
Date key2 = new Date(2011,04,01);//date数据类型就不知道怎么弄了,帮我看看吧!!
// pstmt.setString(1,"%"+key1+"%");
pstmt.setDate(1,new java.sql.Date(key2.getTime()));
result=pstmt.executeQuery();
while(result.next()){
int pid=result.getInt(1);
String name=result.getString(2);
int age=result.getInt(3);
float salary=result.getFloat(5);
Date birthday=result.getDate(4);
System.out.println(pid+" "+name+" "+age+" "+salary+" "+birthday);
}
result.close();
pstmt.close();
conn.close();
}
}下面是我数据库中的数据:pid      name     age       birthday         salary
1 张三 30 2011/4/1 0:00:00 9000
2 张三 30 2011/4/1 0:00:00 9000
3 张三 30 2011/4/1 0:00:00 9000
4 张三 30 2011/4/1 0:00:00 9000
5 张三 30 2011/4/1 0:00:00 9000
6 张三 30 2011/4/1 0:00:00 9000
7 张三 30 2011/4/1 0:00:00 9000
8 张三 30 2011/4/1 0:00:00 9000
9 张三 30 2011/4/1 0:00:00 9000
10 xiaolong 22 1990/5/4 0:00:00 6666
11 xiaoming 22 1994/9/8 0:00:00 1000
12 mr'smith 33 1990/9/9 0:00:00 33

解决方案 »

  1.   

    时间查询的话一般有个时间段的,给你个例子。package test;import java.sql.Connection;
    import java.sql.Date;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;import com.sxit.dataBase.DBCon;public class Test { public static void main(String[] args) {
    PreparedStatement pstmt;
    ResultSet rs;
    String sql="select * from users where entrytime between ? and ?";
    Connection con=DBCon.getConnection();
    try {
    pstmt=con.prepareStatement(sql);
    pstmt.setDate(1, Date.valueOf("2010-03-01"));
    pstmt.setDate(2, Date.valueOf("2011-04-01"));
    rs=pstmt.executeQuery();
    while(rs.next()){
    System.out.println(rs.getLong(1)+" "+rs.getString(2));
    }
    } catch (SQLException e) {
    e.printStackTrace();
    }finally{
    DBCon.closeConnection(con);
    }
    }
    }
      

  2.   

    根据你的birthday后面的全是0可以考虑把like 换成 =,
    pstmt.setDate(1, Date.valueOf("2011-04-01"));
    这样也能查出来。
      

  3.   

    如果是查找相同年月日的话,可以把日期型用字符串比较
    String sql="select pid,name,age,birthday,salary from person where to_char(birthday,'YYYY-MM-DD') = ?";
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1,"2011-04-01");
            result=pstmt.executeQuery();
      

  4.   

    SimplyDateFormat:字符串类型到日期类型的转换楼上的用数据库层的to_date转换也可以
      

  5.   

    SimplyDateFormat format=new SimplyDateFormat("yyyy-MM-dd HH:mm:ss");
    String date=format.format();sql=".... like '%"+date+"'%";你用拼接字符串的方式写SQL语句试试
      

  6.   

    我用的是sqlserver,to_char不是可以识别的内置函数名称。会有错误的~
      

  7.   

    弱弱的问一下你pstmt.setString(1,"%"+key1+"%");中这两个%是干什么的啊?
    而且好像只有SimpleDateFormat,没有SimplyDateFormat吧?
      

  8.   

    对于日期的查找建议不要使用like 还是使用时间段 或者截取到年或者月或者日比较好 like用到date类型上确实比较怪异