java 对oracle日期数据的处理

package com.util;
/*
 *
create table student (name varchar2(10) not null PRimary key , enrolldate date not null);
insert into student values('mark',to_date('08-08-2013','dd-mm-yyyy'));
insert into student values('mark1',to_date('21-08-2003','DD-MM-YYYY'));
insert into student values('mark2','21-8月-2003');

 */
import java.sql.PreparedStatement;
import java.text.SimpleDateFormat;
import org.junit.Test;
public class Date {
    /*
     * 方法一、使用java.sql.Date实现比较简单的yyyy-mm-dd格式日期。
         java.sql.Date不支持时间格式。切记不要使用new java.sql.Date(int year,int month,int date),
         因为还要处理时间差问题。
     */
    
    @Test
    public void test1(){
        try{
        java.sql.Date buydate=java.sql.Date.valueOf("2005-06-08");
        String sql="insert into student values(?,?)";
        PreparedStatement pstmt=JDBCUtils.getConnection().prepareStatement(sql);
        pstmt.setString(1, "小明");
        pstmt.setDate(2, buydate);
        int i=pstmt.executeUpdate();
        if(i>0)
            System.out.println("插入成功!");
        
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    /**
     * 方法二、使用java.sql.Timestamp,同上不使用new Timestamp(....)
     */
    @Test
    public void test2(){
        try{
            java.sql.Timestamp buydate=java.sql.Timestamp.valueOf("2004-06-08 05:33:99");
            String sql="insert into student values(?,?)";
            PreparedStatement pstmt=JDBCUtils.getConnection().prepareStatement(sql);
            pstmt.setString(1, "java");
            pstmt.setTimestamp(2,buydate );
            int i=pstmt.executeUpdate();
            if(i>0)
                System.out.println("插入成功!");
            
        }catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    //方法三、使用oracle 的to_date内置函数
    @Test
    public void test3(){
        try{
            String buydate="2004-06-08 05:33:12";
            String sql="insert into student values (?,to_date(?,'yyyy-mm-dd hh:mi:ss'))";
            PreparedStatement pstmt =JDBCUtils.getConnection().prepareStatement(sql);
            pstmt.setString(1, "dacca");
            pstmt.setString(2, buydate);
            int i=pstmt.executeUpdate();
            if(i>0)
                System.out.println("插入成功!");

        }catch (Exception e) {
            // TODO: handle exception
            System.out.println("插入失败!");
            e.printStackTrace();
        }
    }
    /*
     *  附: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: 年中的第几个星期
     */
    /*
     *  1. oracle默认的系统时间就是sysdate函数,储存的数据形如25-3-200510: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()一般用于从数据库读入日期时用到的函数。

     */
    @Test
    public void test4(){
    
        java.util.Date a = new java.util.Date();
        System.out.println(a);
        //DATE 由日、月和年组成
        java.sql.Date b = new java.sql.Date(a.getTime());
        System.out.println(b);
        //TIME 由小时、分钟和秒组成
        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);

    }

}

JDBCUtil.java

package com.util;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {

    private static String jdbcurl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    private static String  driverClass="oracle.jdbc.driver.OracleDriver";
    private static String username="scott";
    private static String password="scott";
    /**
     * 获取数据库连接
     * @return
     */
    public static Connection getConnection(){
        try {
            
            Class.forName(driverClass);
            return DriverManager.getConnection(jdbcurl,username,password);
        } catch (Exception e) {
            // TODO: handle exception
            throw new RuntimeException(e);
        }
    
        
    
    }
    /**
     *释放资源
     * @param conn
     * @param st
     * @param rs
     */
    public static void close(Connection conn,Statement st,ResultSet rs){
        
        try {
            if(rs!=null)
                rs.close();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }finally{
            try {
                if(st!=null)
                    st.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }finally{
                try {
                    if(conn!=null)
                        conn.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        
        
        
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值