java/oracle日期处理


<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
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 2006
2006-04-03
18:00:34
2006-04-03 18:00:34.388
 
1.         oracle 的系 统时间 就是 sysdate 函数, 存的数据形如 25-3- 2005 10:55:33
2.         java 中取 时间 是java.util.Date
3.         oracle 对应的 时间对 是java.util.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 由小时、分钟和秒组成。 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.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 两个转换函数:
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), 因为还要处理时间差问题。
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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值