java向ORACLE插⼊时间publicclassTest{
publicstaticvoidmain(Stringargs[]){
java.util.Date a=new java.util.Date();
System.out.println(a);
java.sql.Date b=new java.sql.Time());
System.out.println(b);
java.sql.Time c=new java.sql.Time());
System.out.println(c);
java.sql.Timestamp d=new java.sql.Time());
System.out.println(d);
}
}
2
1
2 3 4Mon Apr 03
18
:
00
:
34 CST 2006
2006 -
04
-
03
18
:
00
:
34
2006 -
04
-
03
18
:
00
: 34.388
1、oracle默认的系统时间就是sysdate函数,储存的数据形如25-3-200510:55:33。
2、java 中取时间的对象是java.util.Date。
3、oracle中对应的时间对象是java.sql.Date,java.sql.Time,java.sql.Timestamp、它们都是是java.util.Date的⼦类。
4、 oracle中与date操作关系最⼤的就是两个转换函数:to_date(),to_char()。to_date()⼀般⽤于写⼊⽇期到数据库时⽤到的函数。
to_char()⼀般⽤于从数据库读⼊⽇期时⽤到的函数。
DATE、TIME 和 TIMESTAMP:
SQL 定义了三种与时间有关的数据类型:DATE 由⽇、⽉和年组成。TIME 由⼩时、分钟和秒组成。 T
IMESTAMP 将 DATE 和 TIME 结合起来,并添加了纳秒域。
标准 Java 类 java.util.Date 可提供⽇期和时间信息。但由于该类包含 DATE 和 TIME 信息⽽没有 TIMESTAMP 所需的纳秒,因此并不与上述三种 SQL 类型完全相配。
因此我们定义了 java.util.Date 的三种⼦类。它们是:
1.      有关 SQL DATE 信息的 java.sql.Date
2.      有关 SQL TIME 信息的 java.sql.Time
3.      有关 SQL TIMESTAMP 信息的 java.sql.Timestamp
对于 java.sql.Time,java.util.Time 基本类的⼩时、分钟、秒和毫秒域被设置为零。 对于 java.sql.Date,java.util.Date 基本类的年、⽉和⽇域被分别设置为 1970 年 1⽉ 1 ⽇。这是在 Java 新纪元中的“零”⽇期。java.sql.date中的⽇期可以和标准的SQL语句中含有⽇期的字段进⾏⽐较.java.sql.Timestamp 类通过添加纳秒域来扩展java.util.Date。
oracle数据库字段时间类型如果是date类型,则在插⼊数据时最好⽤
java.sql.Date类型来操作,数据库中可能会只有年⽉⽇,如果oracle时间字段中⽤
的是time类型则⽤java.sql.Time类型来操作,可能只有时分秒,同样oracle数据库java valueof
中如果是TIMESTAMP时间类型,则⽤ java.sql.Timestamp,则会⽐较全的表⽰时
间,年⽉⽇时分秒。
oracle中两个转换函数:
1. to_date() 作⽤将字符类型按⼀定格式转化为⽇期类型:
具体⽤法:to_date(''2004-11-27'',''yyyy-mm-dd''),前者为字符串,后者为转换⽇期格式,注意,前后两者要以⼀对应。如;to_date(''2004-11-27 13:34:43'', ''yyyy-mm-dd hh24:mi:ss'') 将得到具体的时间。
2. to_char():将⽇期转按⼀定格式换成字符类型:
具体⽤法:to_char(sysdate,''yyyy-mm-dd hh24:mi:ss'')
to_date()与24⼩时制表⽰法及mm分钟的显⽰:
在使⽤Oracle的to_date函数来做⽇期转换时,很多Java程序员也许会直接的采⽤“yyyy-MM-dd HH:mm:ss”的格式作为格式进⾏转换,但是在Oracle中会引起错误:“ORA 01810格式代码出现两次”。
如:select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mm:ss') from dual;
原因是SQL中不区分⼤⼩写,MM和mm被认为是相同的格式代码,所以Oracle的SQL采⽤了mi代替分钟。 oracle默认的系统时间就是sysdate函数,储存的数据形如2005-3-2510:55:33,java 中取时间的对象是java.util.Date。
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual
在java对oracle的操作中,对⽇期字段操作的例⼦:
表 book 中有name varchar2(20)//书籍名称,buydate Date //购买⽇期两个字段。已经创建了数据库连接Connection conn;
⽅法⼀、使⽤java.sql.Date 实现⽐较简单的yyyy-mm-dd 格式⽇期。java.sql.Date 不⽀持时间格式。切记不要使⽤new java.sql.Date(int year,int month,int date),因为还要处理时间差问题。
⽅法⼆、使⽤java.sql.Timestamp,同上不使⽤new Timestamp(....)
12345PreparedStatement pstmt  = conn .prepareStatement ("insert into book (name,buydate) values (?,?)");
java .sql .Date buydate =java .sql .Date .valueOf ("2005-06-08");
pstmt .setString (1, "Java 编程思想");
pstmt .setDate (2,buydate  );
pstmt .execute ();
12345PreparedStatement pstmt =
conn .prepareStatement ("insert into book (name,buydate) values (?,?)");
java .sql
⽅法三、使⽤oracle 的to_date 内置函数
.Timestamp buydate =java .sql .Timestamp .valueOf ("2004-06-08 05:33:99");
pstmt .setString (1,
"Java 编程思想");
pstmt .setTimestamp (2,buydate
);
pstmt .execute ();
12345PreparedStatement pstmt  = conn .prepareStatement ("insert into book (name,buydate) values (?,to_date(?, 'yyyy-mm-dd hh24:mi:ss')");
String  buydate ="2004-06-08 05:33:99";
pstmt .setString (1, "Java 编程思想");
pstmt .setString (2,buydate
)
;
pstmt . execute (
)
;
1
2
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
: oracle
d
:
day
:
9
dd
:
ddd
:
dy
:
iw
:
ISO
iyyy
:
ISO
yyyy
:
yyy
,
yy
,
y
:
hh
:
12
hh24 :
24
mi
:
ss
:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。