关于如何操作oracle数据库的date类型的数据的问题

06-07-29 yeshenghai
PreparedStatement pstm=null;
Calendar c=new GregorianCalendar(2006,10,1,10,10,10);
java.util.Date d = c.getTime();
java.sql.Date date2 = new java.sql.Date(d.getTime());
pstm=conn.prepareStatement("insert into time values(?)");
pstm.setDate(1,date2);
pstm.executeUpdate();

//以上是向oracle插入一些date类型的几行代码.但是,有一个问题,就是只能插入年月日,但是小时,分钟,秒,就没办法插进去.

//改用Timestamp这种类型的去插入,结果也同上.小时,分钟,秒还是没有办法插入?

//而且查询的时候,通过
ResultSet rs=stm.executeQuery("select start_date from time");
while(rs.next())
{

date=rs.getDate(1);
t=rs.getTimestamp(1);
g=new GregorianCalendar();
g.setTime(date);
System.out.println("小时分秒:"+g.get(Calendar.HOUR)+"\t"+g.get(Calendar.MINUTE)+"\t"+g.get(Calendar.SECOND));
System.out.println("年月日:"+g.get(Calendar.MONTH)+" \t"+g.get(Calendar.YEAR)+"\t"+g.get(Calendar.DATE));
}

以上通过查询,也只能查询到年月日,但是小时,分钟,秒,却没有办法去查询到,结果均是0,
请各位高手,指点一下.好吗?

Armamd
2006-08-11 10:20
如果向Oracle表中添加一条记录,日期字段可以在JAVA代码中指定为字符串,就象添加字符串字段一样,
在SQL中用oracle中的to_date()函数
1.建表
create table test_db ( t date)

2.添加记录(年月日)
insert into test_db values(to_Date('2005-06-15','yyyy-mm-dd'))

2.添加记录(年-月-日 时:分:秒) 24小时制
insert into test_db values(to_Date('2005-06-15 19:28:35','yyyy-mm-dd hh24:mi:ss'))

3.添加记录(年-月-日 时:分:秒) 12小时制
insert into test_db values(to_Date('2005-06-15 12:28:35','yyyy-mm-dd hh:mi:ss'))

如果想从数据库查询出日期格式的字段,可以在SQL中使用oracle中强大的to_char()函数把日期转换成字符串,
select To_Char(t,'yyyy') year,
To_Char(t,'mm') Month,
To_Char(t,'dd') Day,
To_Char(t,'HH24') Hour,
To_Char(t,'mi') Minute,
To_Char(t,'ss') Second from test_db
这样的在JAVA代码中可以直接取字段值了

如果嫌写SQL语名麻烦用这个
select To_Char(t,'yyyy-mm-dd hh24:mm:ss') time_ from test_db
这样直接取time_字段值即可