java/oracle日期处理

来源:互联网 发布:金山毒霸软件 编辑:程序博客网 时间:2024/05/01 21:21
public class Test{        public static void main (String args []){                              java.util.Date a = new java.util.Date();                System.out.println(a);                java.sql.Date b = new java.sql.Date(a.getTime());                System.out.println(b);                java.sql.Time c = new java.sql.Time(a.getTime());                System.out.println(c);                java.sql.Timestamp d=new java.sql.Timestamp(a.getTime());                System.out.println(d);        }}
Mon Apr 03 18:00:34 CST 20062006-04-0318:00:342006-04-03 18:00:34.388

1.         oracle的系统时间就是sysdate函数,存的数据形如25-3-200510:55:33
2.         java 中取时间是java.util.Date
3.         oracle对应的时间对是java.util.Datejava.sql.Timejava.sql.Timestamp它们都是是java.util.Date的子
4.         oracledate操作系最大的就是两个转换函数:to_date(),to_char()to_date()一般用于写入日期到数据库时用到的函数。to_char()一般用于从数据库读入日期时用到的函数。
 
DATETIME  TIMESTAMP
SQL 定义了三种与时间有关的数据类型:DATE 由日、月和年组成。TIME 由小时、分钟和秒组成。 TIMESTAMP 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.Timejava.util.Time 基本类的小时、分钟、秒和毫秒域被设置为零。 对于java.sql.Datejava.util.Date 基本类的年、月和日域被分别设置为 1970  1  1 日。这是在 Java 新纪元中的日期。java.sql.date中的日期可以和准的SQL句中含有日期的字段行比.java.sql.Timestamp 类通过添加纳秒域来扩展 java.util.Date
 
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
在使用Oracleto_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中不区分大小写,MMmm认为是相同的格式代,所以OracleSQL采用了mi代替分 oracle默的系统时间就是sysdate函数,存的数据形如2005-3-2510:55:33java 中取时间是java.util.Date
select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual
 
javaoracle的操作中,对日期字段操作的例子:
 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),因为还要处理时间差问题。
PreparedStatement 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();
方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)
PreparedStatement pstmt = conn.prepareStatement("insert into book (name,buydate) values (?,?)");
java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
pstmt.setString(1, "Java编程思想");
pstmt.setTimestamp(2,buydate );
pstmt.execute();
方法三、使用oracle to_date内置函数
PreparedStatement 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();
:oracle日期格式参数含义说明
d:一周中的星期几
day:天的名字,使用空格填充到9个字符
dd:月中的第几天
ddd:年中的第几天
dy:天的简写名
iw: ISO标准的年中的第几周
iyyy:ISO标准的四位年份
yyyy:四位年份
yyy,yy,y:年份的最后三位,两位,一位
hh: 小时,按12小时计
hh24:小时,按24小时计
mi:
ss:
mm:
mon:月份的简写
month:月份的全名
w:该月的第几个星期
ww:年中的第几个星期
0 0
原创粉丝点击