Oracle表中字段类型为varchar2(19),内容为'2007-01-01 00:00:00'程序中变量数据为'20070401'如何进行这二个日期的比较大小,用什么函数转换?

解决方案 »

  1.   

    用java.text.SimpleDateFormat里的方法将字符串转为Date
    然后用java.util.Date
    boolean before(Date when) 或者 boolean after(Date when) 但不清楚为什么既然是日期在Oracle里面用varchar2(19)
      

  2.   

    to_date转换一下 变成统一的日期类型
      

  3.   

    本来是从文本中导的数据到Oracle中的,但导的时候没有用to_date转换,就直接用了varchar2(19),
    请问是下面这样转换吗?String oldDate="20070401";
    SimpleDateFormat cf=new SimpleDateFormat("yyyy-MM-dd");
    Date newDate=cf.parse(oldDate);//
    Date oraDate=cf.parse(rs.getString("数据库字段"));//数据库字段
      

  4.   

    SimpleDateFormat cf=new SimpleDateFormat("yyyyMMdd");
      

  5.   

    最简单的是在sql直接比较:
       用oracle的日期函数转换:to_date("20070401","yyyy-mm-dd hh24:mm:ss")
    当然前提是相关的字段也要是日期型的.假如不是的话 只能用楼上那些的方法了,其实很多,你也可以写一个类,专门处理成你需要的格式.我也同样有个疑问,既然是日期,为什么不设为日期型 而要为varchar2行
      

  6.   

    public static final String getDateString(java.util.Date aDate) {
        String ret = "";
        Calendar c = Calendar.getInstance();
        c.setTime(aDate);    ret = c.get(Calendar.YEAR) + "-" ;
        ret = ret + addZero((c.get(Calendar.MONTH)+1) + "", 2) + "-" ;
        ret = ret + addZero((c.get(Calendar.DAY_OF_MONTH)) + "", 2) + " " ;
        ret = ret + addZero((c.get(Calendar.HOUR_OF_DAY)) + "", 2) + ":" ;
        ret = ret + addZero((c.get(Calendar.MINUTE)) + "", 2) + ":";
        ret = ret + addZero((c.get(Calendar.SECOND)) + "", 2);
        return ret;
      }我不知道你的参数是不是日期行,如果不是,你可以改写一下就好了