我有一个表,其中一个字段datetime为oracle sysdate函数自动插入的时间。插入几条记录后,该字段在数据库中存入例如“2006-11-22 08:58:02”这样的信息。
接着我在我的java 程序中取出该字段,显示结果。结果为“2006-11-22 08:58:02.0”注意莫名其妙的多了个.0? 怎么回事哪?我的代码如下:
public class test{ private void getDate(){
try{
String sql="select * from dbmslog";
MyUtil.execute(sql);
ResultSet res=MyUtil.getRes();
while(res.next()){//该表有10个字段,第10个字段为datetime
System.out.println(MyUtil.toUTF(res.getString(10)));
}
}catch(Exception e){
e.printStackTrace();
} finally{
Pool.close();
}
}}
接着我在我的java 程序中取出该字段,显示结果。结果为“2006-11-22 08:58:02.0”注意莫名其妙的多了个.0? 怎么回事哪?我的代码如下:
public class test{ private void getDate(){
try{
String sql="select * from dbmslog";
MyUtil.execute(sql);
ResultSet res=MyUtil.getRes();
while(res.next()){//该表有10个字段,第10个字段为datetime
System.out.println(MyUtil.toUTF(res.getString(10)));
}
}catch(Exception e){
e.printStackTrace();
} finally{
Pool.close();
}
}}
你不如直接String sql="select to_date('yourcol','yyyy-mm-dd hh24:mi:ss') from dbmslog";
首先:直接运行 :select sysdate from dual 结果 :11/27/2006 16:17
而且:毫秒记录也不是 后面多一个“.0”
select to_char(sysdate,'YYYY-MM-DD HH24:MI.SS') from dual
结果:2006-11-27 16:20.04应该跟java有关系,解决方法建议使用上述。
P.S. 我用ODBC连接ORA9.2,tomcat 4。1 ,JSP 。没有出现这个问题。
goodbee(采蜂)说得没错
如下语句可以修改默认的时间格式。
alter session set nls_date_format='yyyymmddhh24miss'
Date类型的存储类型其实是一个整数,没有所谓的格式。
java中取出Oracel的Date类型,需要转化为字符串才能表示出来。
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
System.out.println(f.format(res.getString(10)));
你的问题只是默认的转化各是不符合你的要求。
而且,DateTime类型的对象,用不要用简单的toString之类的函数来变成字符串。