如果只是插入到数据库的花,可以不用这么麻烦。还要做select的条件吗?

解决方案 »

  1.   

    Letter  Date or Time Component    
    G  Era designator    
    y  Year    
    M  Month in year    
    w  Week in year    
    W  Week in month    
    D  Day in year    
    d  Day in month    
    F  Day of week in month    
    E  Day in week    
    a  Am/pm er    
    H  Hour in day (0-23)    
    k  Hour in day (1-24)    
    K  Hour in am/pm (0-11)    
    h  Hour in am/pm (1-12)    
    m  Minute in hour    
    s  Second in minute    
    S  Millisecond    
    z  Time zone    
    Z  Time zone是没有注意字母大小写的原因吗?
      

  2.   

    是的,因为是用在SELECT的条件里所以格式一定要完全一致。我的字母没有用错
    但是程序一的结果是the date is:Thu Oct 31 00:00:00 EET 2002怎么能只输出  31/10/2002呢我给的格式是这样的啊
      

  3.   

    写到数据库里2003-10-18也可以的呀。我现在也是这样用的,select也可以呀. java.util.Calendar cal = java.util.Calendar.getInstance();
    System.out.println("curTime ="+java.text.DateFormat.getDateInstance().format(cal.getTime()));
    顺手写的,给你参考一下。
      

  4.   

    public class DateParser1{ java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
    public String stringToDate(String str){
    try{
    return sdf.format(sdf.parse(str));
    }catch(Exception e){
    e.printStackTrace();
    return null;
    }
    }
    public static void main(String[] args){
    DateParser1 dp = new DateParser1(); String sss = "31/10/2003"; System.out.println("the date is:"+dp.stringToDate(sss));
    }
    }
      

  5.   

    楼上的方法也不行,这样出来的数据还是Stringtimeto="09:03:00";
    java.sql.Date time=dp.stringToTime(timeto);
    dda.java:32: incompatible types
    found   : java.lang.String
    required: java.sql.Date
     java.sql.Date time=dp.stringToTime(timeto);
      

  6.   

    在出入数据库的时候这样呢? ……TO_DATE('2003-10-20 09:30:00','yyyy-mm-dd hh:ms:ss')……  我不知道有没有31/10/2003的格式,参考
      

  7.   

    我也有试过这个可是很奇怪的就是会报错说TO_DATE这个METHOD没有定义过
      

  8.   

    to_date是oracle的函数不太清楚楼主到底是什么意思
    是需要把String ‘31/10/2002’‘09:03:00'按'dd/MM/yyyy' 'HH:MM:ss'的格式存进数据库?还是必须存一个Date类型的值进数据库?如果你往数据库里存的是Date类型的话(不管是java.util.Date还是java.sql.Date),取出来都是Date类型的对象,直接调用该对象的toString时,都是按相应Date类的toString方法所设定的格式来输出的String(java.util.Date输出的是dow mon dd hh:mm:ss zzz yyyy格式的,java.sql.Date和这个不一样),这个格式的String不是你想要的格式,因此必须自己转换。一般的转换就是利用这个Date的对象来生成Calendar,然后用该Calendar对象的get方法取得相应年月日时分秒,然后自己拼字符串。Date类的getYear()等方法已经相应被Calendar.get(Calendar.YEAR)方法取代,不推荐使用了。如果数据库设计可以变更的话,像你这种情况最好把Date字段改成String类型的,
    这样转换也方便。如果数据库不能改,还需要特定格式输出,就只能先取得Date对象,然后生成Calendar,取相应字段值,字符串相加这样来做了
      

  9.   

    进的时候TO_DATE,出的时候TO_CHAR是可以的,我是这么做的。楼主你的?具体的拿来看看
      

  10.   

    因为数据库的格式是一定不能改的,一定要是java.sql.Date “dd/MM/yyyy”"HH:mm:ss"而且是用在SELECT的条件里面,要选出固定时间某时段内的数据,所以不管是类型还是格式都必须一致因为用的是ACCESS的数据库所以TO_DATE是不能用的。
    我现在也就是能把String 转化成java.util.Date, 但这样格式差很多,而且怎么能在转化成java.sql.Date呢
    能不能再给我讲讲
      

  11.   

    假设你已经将一个String转换成java.util.Date了
    我这里用一个新的Date来代替
    java.util.Date d1 = new java.util.Date();//这里换成你的Date
    long l = d1.getTime();
    java.sql.Date s1 = new java.sql.Date(l);//利用已有的java.util.Date来生成相应时间的java.sql.Date的实例,放到数据库中
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(s1);//从数据库中取出来的格式是java.sql.Date,转换成Calendarint year = c.get(c.YEAR);//取Calendar实例的各个Field的值
    int month = c.get(c.MONTH)+1;//月份要加1,这是Calendar设计的毛病
    int day = c.get(c.DATE);
    int hour = c.get(c.HOUR);
    int minute = c.get(c.MINUTE);
    int second = c.get(c.SECOND);
    System.out.println(""+year+"/"+month+"/"+day+" "+hour+":"+minute+":"+second);//拼成你想要的字符串
      

  12.   

    fft123() 
    谢谢,不过这样出来的的确是java.sql.Date,但是格式是yyyy-MM-dd报错是 Data type missmatch incriteria expression
    但是数据库的格式一定要是dd/MM/yyyy, 应该怎么改啊
      

  13.   

    你是不是要用dd/MM/yyyy的字符串格式表示的日期和数据库里用java.sql.Date存的日期来比较??
    如果都是日期类型,那没办法了,数据库里存的日期类型都是按java规定的格式来存放的,如java.sql.Date格式就是yyyy-MM-dd,java.util.Date就是dow mon dd hh:mm:ss zzz yyyy格式。
    要不你比较的时候,把查询条件中日期格式转成你数据库的格式吧
    就是把dd/MM/yyyy格式的日期换成yyyy-MM-dd格式的,然后再和数据库里的比较
      

  14.   

    不是比较,而是SELECT的条件,程序就是USER选则一个日期和时间,然后在根据选的内容从数据库里把信息提出来
    数据库里的是dd/MM/yyyy的格式这样要怎么办啊
      

  15.   

    数据库里存的是java.sql.Date格式的还是String格式的?
    >数据库里的是dd/MM/yyyy的格式
    感觉你好像存的是String类型的
      

  16.   

    插入数据库时用SimpleDateFormat类的parse方法没错但插入后就是java.sql.Date格式的了,直接打印肯定是按照默认格式,如果需要按照自己的格式可以调用SimpleDateFormat类的format方法当用户选择好日期时间后,可以先组合出一个字符串dateStr,格式可以为“yyyy-MM-dd HH:mm:ss”,然后在sql语句中调用to_days(time) <= to_days(dateStr)就可以进行日期比较了(to_days仅对mysql数据库有效,其他数据库可能会有不同)
      

  17.   

    fft123() 不是,数据库用的是Date/Time型是Micro Access 的数据库
      

  18.   

    tmd access太恶心了
    自己定义的一套语法规范,我试了半天才试出来时间怎么匹配
    你照下面的做吧,不用转来转去的我做测试的access数据库里,Date/Time类型存的日期格式是:2003-8-1 11:39:28
    (access我几乎不用,不知道你怎么存成dd/MM/yyyy格式的,总之按照数据库里的格式组合你的查询字符串就是了)
    根据你的用户选择的时间,把它拼成一个字符串,格式为"yyyy-MM-dd"
    sql语句这样写:
    String sql = "select * from Table where YourDate between #2003-08-01 00:00:00# and #2003-08-03 23:59:59#";
    //数据库里存的有秒,所以用between判断。后面的秒自己加。日期两边要加#,否则老是报参数不足。我这边调试已经通过了
      

  19.   

    多谢 
    fft123()  你给的方法可以执行,很方便,不胜感激