TO_DATE()是Oracle中的函数啊,我现在是输入java.uitl.Date型的,在方法中用java.sql.Date得到这个日期,就用jdbc把这个日期存入数据库,但是我在用java.util.Date得到的日期是正确的,当转换到java.sql.Date后,存入数据库的日期不是前面java.util.Date生成的日期。
我的问题是如何让我之前输入的日期到数据库里时不变。

解决方案 »

  1.   

    转换成timestamp格式的就可以插进去了
      

  2.   

    有没有具体的代码啊?
    我是用java.sql.Date date = new java.sql.Date(utilDate)的。
    就是这句代码把日期变了,请问大家是怎么解决的
      

  3.   

    to sky126:晕,我前面就说到过了,to_date()是oracle中的函数。要用的是java中的jdbc把日期存入数据库中,也就是java.sql.Date这个类。我们输入日期的时候是用java.util.Date类的,可是如果要用jdbc存入数据库,只能用java.sql.Date把java.util.Date的日期转换一下。这样,转换过后,在数据库中的日期就不是我们一开始输入的日期了。就是这个问题,请大家看清楚,谢谢。
      

  4.   

    java.sql.Date date = new java.sql.Date(utilDate)
    用这个试试吧
    java.sql.Timstamp time=new java.sql.Timestamp(utilDate.getTime());
      

  5.   

    不要用java.sql.date那个是被depricted的东西。不用转化用string的就可以。
    insert into talbe1 (a_time) values(to_date('"++"',"yyyy-mm-dd")
      

  6.   

    yyyy-mm-dd格式的日期型最好和一个js的日期控间配合使用。就比较完美了。
      

  7.   

    根本不应该使用字符串来插入数据库的日期类型,这个做法最好不用
    用PreparedStatement prep = ...
    prep.setTimestamp(1,....);
    prep.executeUpdate();
    prep.close();这个才是良好的方法!!!
      

  8.   

    to ChDw:我用的是VO向数据库中插入
    也就是PreparedStatement ps = ...
    ps.setDate(1,xxxVO.getXXX());//getXXX()返回的是java.sql.Date
    ps.executeUpdate();
    ps.close();
    请问我要做怎么样的转换呢,在界面层上我输入年,月,日。最后要生成java.sql.Date的一个对象再同数据库中插入。你说的setTimeStamp()这个方法能取到我输入的值吗?如果能取到那如何转成java.sql.Date呢?
      

  9.   

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR,Integer.parse(yearStr));
    cal.set(Calendar.MONTH,Integer.parse(monthStr));
    cal.set(Calendar.DATE,Integer.parse(dateStr));ps.setTimestamp(1,new Timestamp(cal.getTime().getTime()));
    setDate 是不包含时间的日期类型,Timestamp才是包含时间的
      

  10.   

    然而俺接触过的大项目,上百上千人月的,国内的或者外包的,电信物流各行各业的,无一例外是使用varchar2(对于Oracle)来存储日期类型的,部分字段还有使用number类型的,我想经过长期实践检验的做法应该不会是靠不住的。解决日期类型的存储和运算确实是一个难题,是由数据库和开发语言运行环境等多方面因素决定的,而且还要保证数据库设计和代码的可重用性和可移植性,有谁可以提供一套更好的完整的通用的解决方案呢??对于Java而言,Calendar和DateFormat、SimpleDateFormat、Date等类型当然是要用到的,这就不用我废话了。
      

  11.   

    谢谢大家能发表这么多的意见,给我帮助很大,我最后用Timestamp这个类了,但我自己写了一个时间转换的类来做java.util.Date到java.sql.Timestamp的转换了。因为用java.util.Date生成的日期总是不对,年都要用输入的年减去1900年才行,月还要用输入的减1才行。例如输入2004年12月12日时,在用java.util.Date得到日期的时候就要写成java.util.Date date = new java.util.Date(104,11,12);大家有没有什么更好的方法呢?请告诉小弟我,谢谢先。
      

  12.   

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR,Integer.parse(yearStr));
    cal.set(Calendar.MONTH,Integer.parse(monthStr));
    cal.set(Calendar.DATE,Integer.parse(dateStr));
    java.sql.Timestamp ts = new java.sql.Timestamp(cal.getTime().getTime());Calendar才是日期处理的好方法!不要使用Date来完成