我用JAVA 在做一个日期区间查询时出现问题,说是转换为datetime 时出现问题,然后异常抛个不停
下面是语句:     
     String d1=year1+'-'+month1+'-'+day1;//得到组合框的内容
     String d2=year2+'-'+month2+'-'+day2;
     SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");
     java.util.Date date1=df.parse(d1);
     java.util.Date date2=df.parse(d2);
  查询语句如下:
     select * from P where DATE between 'date1' and 'date2'

解决方案 »

  1.   

    把d1和d2打印出来看看,可能是java.sql.date和java.util.date不同的问题
      

  2.   

    用这个吧
    DateFormat df = DateFormat.getDateInstance();
    java.util.Date date1=new Date();
    try
    {
      date1=df.parse("2007-08-22 13:20:50");
    }catch(Exception e)
    {
      System.out.println(e);
    }
    System.out.println(date1.toLocaleString());
      

  3.   

    我要做的是字符串转日期,java.sql.Date在程序里不能用 ,它的parse方法不可用
      

  4.   

    或者
    SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); 
    改为
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); mm大写
    y  年  Year  1996; 96  
    M  年中的月份  Month  July; Jul; 07  
    w  年中的周数  Number  27  
    W  月份中的周数  Number  2  
    D  年中的天数  Number  189  
    d  月份中的天数  Number  10  
      

  5.   

    java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][SQL Server]从字符串转换为 datetime 时发生语法错误。
    总是提示这个错误
      

  6.   

    不是你上面所说的问题
    基本方法我都试过了
    TRY CATCH 也用过了
     还是提示哪个错误
      

  7.   

    public static Date getDate(String str) {
    Date date = null;
    // 2006-12-19 09:00:28
    final SimpleDateFormat df2 = new SimpleDateFormat(
    "yyyy-MM-dd' 'HH:mm:ss");
    // Fri,05 Jan 2007 06:00:34 GMT
    final SimpleDateFormat df1 = new SimpleDateFormat(
    "EEE,dd MMM yyyy HH:mm:ss z", Locale.US);
    // 2006-12-27
    final SimpleDateFormat df3 = new SimpleDateFormat("yyyy-MM-dd");
    if (date == null) {
    try {
    date = new Date(str);
    } catch (Exception e) {
    }
    }
    if (date == null) {
    try {
    date = df1.parse(str);
    } catch (Exception e) {
    }
    }
    if (date == null) {
    try {
    date = df2.parse(str);
    } catch (Exception e) {
    }
    }
    if (date == null) {
    try {
    date = df3.parse(str);
    } catch (Exception e) {
    }
    }
    if (date == null) {
    // System.err.println("bad date:" + str);
    date = new Date();
    date.setHours(0);
    }
    return date;
    }
      

  8.   

    晕,直接拼成sql语句执行,不行吗?String sql="select * from P where DATE between"+"'2007-08-01'"+"and+"'2007-08-20'";
    executeQuery(sql);