服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > 数据库技术 > Oracle技术 > DBA > 查看文档

oracle时间精确到时、分、秒处理方法

  一般数据库中时间的格式为date类型,而我们从页面中获取的时间往往为string类型,这个就需要类型的转换。一般我们会通过调用java.text.simpledateformat java类来对其进行转换。这个java类中我们经常用到的方法有两个,一个是format(将时间格式的数据转换成string类型),另一个就是parse(将string类型转换成date类型)。我们一般可以将parse封装到自己的方法中,

  在oracle数据库中时间的存储和读取(读取时、分、秒)

  一般数据库中时间的格式为date类型,而我们从页面中获取的时间往往为string类型,这个就需要类型的转换。一般我们会通过调用java.text.simpledateformat java类来对其进行转换。这个java类中我们经常用到的方法有两个,一个是format(将时间格式的数据转换成string类型),另一个就是parse(将string类型转换成date类型)。我们一般可以将parse封装到自己的方法中,例:

  /**
   * 方法描述:页面中字符串转化为日期类型
   *
   * 输入参数:从页面中得到的以字符串形式表示的日期数据
   * 输出参数:转换后的日期
  */

 public class timeexh{
  public static date transtodate(string strdatefrompage) {
    date date = null;

    //此处为yyyy-mm-dd 则为2005-1-13
    simpledateformat sdf = new simpledateformat("yyyy-mm-dd");
   
    //建立一个一定格式的 simpledateformat
    if(strdatefrompage==null) {
      return new date();
    }
    if (strdatefrompage.length()>10) {
       sdf =  new simpledateformat("yyyy-mm-dd hh:mm:ss");
       //此处时间方式为2005-1-13 20:00:12
    }
    try {
      date = sdf.parse(strdatefrompage);
    } catch (exception ex) {
      ex.printstacktrace();
    }
    return  date;
  }
 }

  在oracle数据库中提供了to_date的方法来对string类型的时间来进行转换。而在oracle数据库中不能将时间直接放到vo中传给数据库,这样数据库中的时间为格林氏时间,不符合中国人的时间习惯。所以在这里有两中不同的处理方式进行处理。

  第一种:vo中存储时间的类型为string类型。

  我在这里写一个简单的vo为:

 public class datevo {
   ..........//省略掉定义部分
  public void setstart_date(string start_date){
    start_date= start_date
  }

  public string getstart_date() {
    return this.start_date;
  }
  /**
   * 判断start_date是否为空
   */
  public boolean isemptystart_date() {
    if (this.start_date == null || this.start_date.equals("") ) {
      return true;
    } else {
      return false;
    }
  }
 }
  //a.所传递参数为date类型
  //获得当前时间,并将值传递给vo:   
    simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");
   //将当前时间转换为yyyy-mm-dd hh:mm:ss格式
   string nowdate = sdf.format(new date());
   //将此string值放进vo中的setdate()方法中。
    vo.setdate(nowdate);

    //在组织sql语句时从vo中获得时间值。
    sql语句的前部分省略,主要为后部分的时间的处理。
    sbsql.append(insert into news (start_date,....) value ();
    if (!vo.isemptystart_date()) {
      sbsql.append("");
      sbsql.append("to_date('");
     //to_date为oracle数据库中转换时间的函数,处理对象为string
      sbsql.append(vo.getstart_date());
      sbsql.append("','yyyy-mm-dd hh24:mi:ss')");//注意这行代码,格式得正确,否则得不到时、分、秒
    } else {
      sbsql.append("null");
    }
    sbsql.append(" ....) ");

  //b.所传递参数为string类型(从页面获取)
  if (request.getparameter("start_date") != null
      && !request.getparameter("start_date").equals("")) {
   
    //将此string值放进vo中的setdate()方法中。
    vo.setdate(start_date);
  }
  后面处理同上
  ........

  第二种:vo中存储时间的类型为date类型。

 public class datevo {
   ..........//省略掉定义部分
  public void setstart_date(date start_date){
    start_date= start_date
  }

  public date getstart_date() {
    return this.start_date;
  }
  /**
   * 判断start_date是否为空
   */
  public boolean isemptystart_date() {
    if (this.start_date == null || this.start_date.equals("") ) {
      return true;
    } else {
      return false;
    }
  }
 }
   //a.所传递参数为date类型
   //获得当前时间,并将值传递给vo:   
    simpledateformat sdf = new simpledateformat("yyyy-mm-dd hh:mm:ss");
    string nowdate = sdf.format(new date());//将当前时间转换为yyyy-mm-dd hh:mm:ss格式
    将此string值放进vo中的setdate()方法中。
    vo.setdate(timeexh.transtodate(nowdate));

   
    //在组织sql语句时从vo中获得时间值。
    sql语句的前部分省略,主要为后部分的时间的处理。
    sbsql.append("insert into news (start_date,....) value (");
    if (!vo.isemptystart_date()) {
      sbsql.append("");
      sbsql.append("to_date('");
      sbsql.append(sdf.format(vo.getstart_date()));
      sbsql.append("','yyyy-mm-dd hh24:mi:ss')");
    } else {
      sbsql.append("null");
    }

    sbsql.append(" ....) ");
   
    //b.所传递参数为string类型
    if (request.getparameter("start_date") != null
        && !request.getparameter("start_date").equals("")) {
   
       //将此string值放进vo中的setdate()方法中。
       vo.setdate(timeexh.transtodate(request.getparameter("start_date")));
    }   
   
    //后面处理同上
    .........


  

扫描关注微信公众号