oracle里面有todate的函数,一般数据库应该都可以转的吧,
利用数据库里面提供的日期计算应该是最方便得吧

解决方案 »

  1.   

    用dataformat把字符转成日期,然后再比较好了,如果是对齐的格式的话,那就切字符窜了,转换成数字,然后比较了
      

  2.   

    字符串也可以进行比较的SUBSTR(borndate,4)取前4位得到年,然后和1990做比较就可以了
      

  3.   

    字符型,存成的格式可以是:2002-02-02字符串类型转换成日期类型为:
    String str="2000-11-23";
    SimpleDateFormat tepDate = new SimpleDateFormat("yyyy-mm-dd");Date tepDate = tepDate.parse(str);
    日期类型转换成字符串类型为:
    java.util.Date now=new java.util.Date();
    String strOut = "";
           java.text.SimpleDateFormat dft = new java.text.SimpleDateFormat("yyyy-MM-dd");
           strOut = dft.format(now);执行语句是:
    ResultSet rs=sqlbean1.executeQuery(sql);
    关键是sql怎么写:
     String sql="select * from xjff where"+((Date)formatter.parse(borndate))+"<(date-5113) 
    where后面到底怎么写:我上面这样写肯定是不对的
    是字符串比较还是日期比较,郁闷!
    14*365+3=14年(3为差的闰年天数)
      

  4.   

    当然是日期比较那,用当前的日期减去生日的时间的long(getTime())值,然后再除365×24×60×60×1000,如果大于14,就是你要选择的对象了.....
      

  5.   

    你不是已经将字符串类型转换成日期类型的了嘛,那么得到的都是Date类型的,对它们你可以用getTime()这个函数取得它们的long值,你不是要大于14岁的嘛,所以用现在得Date的时间减去你从数据库中取得的时间Date值(long值),不就是得到两者的差值了嘛,最后除365×24×60×60×1000是为了得到年数,如果大于14,就是大于14岁的了
      

  6.   

    if ((now-long(getTime(formatter)))/(365*24*60*60*1000))>14怎么提示我这句有错误?
    Generated servlet error:
        [javac] Compiling 1 source fileC:\Apache Group\Tomcat 5.0\work\Catalina\localhost\jhsy\org\apache\jsp\gqtishi_jsp.java:306: ')' expected
    if ((now-long(getTime(formatter)))/(365*24*60*60*1000))>14
      

  7.   

    发现如果:
    if (now-getTime(formatter)/(365*24*60*60*1000))>14
    提示:
    C:\Apache Group\Tomcat 5.0\work\Catalina\localhost\jhsy\org\apache\jsp\gqtishi_jsp.java:306: illegal start of expression
    if (now-getTime(formatter)/(365*24*60*60*1000))>14
                                                   ^
      

  8.   

    SQL语句中的比较要用字符串的比较,因为你的数据库中的类型是字符串类型的,所以你要做几步的转换,首先进行字符串的截取,得到记录中的年的字符串,然后转换成日期型的;接着和当前的年份比较。或者你直接用字符串的比较也可了,
    如String SQL="select * from xjff where"+borndate.subString(0,4)+"< 1986";
    因为在java中你比较字符串,它会按字典顺序来排序的。
      

  9.   

    楼主为什么要把简单的事情搞复杂,你在数据库里用个datetime.你的问题是不是再简单不过了,干吗要钟情于char.
      

  10.   

    String SQL="select * from xjff where"+borndate.subString(0,4)+"< 1986";
    这么用不对,
      

  11.   


    这是我帮楼主写的代码,你看一下,我已经调试过了
    不过有一点不同的是数据库的date类型是datetime类型的。
    至于你说的那个问题,你可以三个select 怎么样
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>无标题文档</title>
    </head><body>
    <%
    String DRV="com.microsoft.jdbc.sqlserver.SQLServerDriver";
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=web";
    String user="sa";
    String pwd="";
    String dt="2002";
    String sqlStmt="select * from pic where date>"+dt;
    Class.forName(DRV);
    Connection conn=DriverManager.getConnection(url,user,pwd);
    PreparedStatement stmt=conn.prepareStatement
    (sqlStmt,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    ResultSet rs=stmt.executeQuery();
    while(rs.next()){
    String str=rs.getString(2);
    out.println(str);
    }
    %></body>
    </html>
      

  12.   

    不会吧,还没搞定,getTime()不是这样用的,算了给你一个例子吧,你怎么不看doc的帮助看看getTime()怎么用的。import java.util.Date;public class NameApplication
    {
    public static void main(String args[])
    {
        Date d2 = new Date(2004,8,13);
        Date d1 = new Date(1979,8,12);
        long tt = d2.getTime()-d1.getTime();
        long dddd = tt/86400000;
        System.out.println(dddd);
     }
    }上面是比较判断两个时间内相差多少天,稍微改改就能用了