日期:2014-05-20  浏览次数:20725 次

急!急!向oracle数据库中插入时间格式问题!
向数据库中插入时间属性,
Java code

    SimpleDateFormat simpleTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//定义日期格式  默认时间格式:yyyy-MM-dd HH:mm:ss
    //SimpleDateFormat simpleDate = new SimpleDateFormat("yyyy-MM-dd");
    String passTime = pwoEditForm.getPasstime();
    java.util.Date passUtilDate = simpleTime.parse(passTime);
    java.sql.Date passSqlDate = new java.sql.Date(passUtilDate.getTime());
    pwOrder.setPasstime(passSqlDate);


数据插入了,但是并没有按照定义好的yyyy-MM-dd HH:mm:ss格式插入,而是yyyy-MM-dd的格式,导致时分秒数据丢失!

以下是数据库中查询的系统时间格式:
SQL code

    --alter session set NLS_date_format ='yyyy-mm-dd hh24:mi:ss';
    select sysdate from dual;
    --2011-9-23 18:35:53


显然格式也是没有问题的。

请问各位大拿以前有没有遇到这样的问题,帮下了!~

------解决方案--------------------
passUtilDate.getTime()这个拿到的只是天。没有时分秒啊。。你debug可以看看。。
api不在手边,lz可以查查api
------解决方案--------------------
simpleTime.Format(new Date());
------解决方案--------------------
楼主你System.out.println(passSqlDate);一下不就知道你传过去的是什么格式的了吗?知道是哪里的问题就好解决了啊……
------解决方案--------------------
你可以把类中该属性设为String类型的,然后在oracle数据库中插入时用insert into table values(to_date('2009-5-7 07:09:37','yyyy-mm-dd HH:MI:SS(24)'))如果是12小时进制的就不加24,如果是24小时进制的就加24。可以试一下。。。
------解决方案--------------------
楼主试试直接传一个new Date()给数据库么?
其实你可以把数据库设置成varchar2的 ,因为你在服务器端有做了处理了。
------解决方案--------------------
通过jdbc或才hb设置参数时,不能用setDate(),要用setTimestamp()

比如 quer.setTimestamp();
stmt.setTimestamp();
//词语可能写得不对,LZ校正一下
这个在windows下是一样的,但在linux下不一样。



------解决方案--------------------
insert into user_t1 values(seq_cc.nextval,'ccc','123',to_date('2010-09-15','yyyy-mm-dd'));
------解决方案--------------------
Date里面的方法大多都已经过时了。
用日历类 Calendar
------解决方案--------------------
你的代码也可以。如果你确定你从Form传过来的是符合yyyy-MM-dd HH:mm:ss格式的话。
Java code

SimpleDateFormat simpleTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");          String passTime = pwoEditForm.getPasstime();
//这边可以打印出来看看
System.out.println(passTime );
java.util.Date passUtilDate = simpleTime.parse(passTime);
//没必要用sql的Date重新封装所以我删掉了.直接下面这句。如果你那个对象需要的是SQL的Date你再补回,但其实应该是一样的,Date是他的父类
pwOrder.setPasstime(passUtilDate);

------解决方案--------------------
orcale数据库插时间需要转换格式,就像13楼那样。
------解决方案--------------------
sql.Date是没有时分秒的。我记得可以不用转,也就是java.util.Date就可以
要插入数据库有时分秒的sql包里用Timestamp
Java code
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
       java.util.Date utilDate=new Date();      
             java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());

------解决方案--------------------
insert into user_t1 values(seq_cc.nextval,'ccc','123',to_date(?,'yyyy-MM-ddHH24:mm:ss'));



这样插入 就不会出问题的 。。。。。。。。。。。。。。但是只能oracle 哦