zoukankan      html  css  js  c++  java
  • java.util.Date 和 Java.sql.Date

    java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类


    java.util.Date是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
    java.sql.Date是针对SQL语句使用的,就是一个包装了毫秒值的瘦包装器 (thin wrapper)之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date 

    格式如下:

    java.util.Date 是 年-月-日 时:分:秒.毫秒

    java.sql.Date 是 年-月-日

    java.sql.Time 是 时:分:秒

    java.sql.Timestamp 是 年-月-日 时:分:秒

    将util.Date转换成sql.Date是:
    java.util.Date date=new Java.util.Date();
    java.sql.Date d=new java.sql.Date (date.getTime());

    如何将"yyyy-mm-dd"格式的字符串转换为java.sql.Date

    //SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); String c= "2012-12-01"; try{ java.util.Date date = dateFormat.parse(dateString); //解析字符串的文本,生成 Date
    //
    java.util.Date.getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。 java.sql.Date sqlDate
    = new java.sql.Date(date.getTime()); System.out.println(sqlDate.getTime()); } catch (Exception ex) { System.out.println(ex.getMessage()); }

    如果我们把一个java.sql.Date值通过PrepareStatement的setDate方法存入数据库时,java程序会对传入的java.sql.Date规范化,非规范化的部分将会被劫取。然而,我们java.sql.Date一般由java.util.Date转换过来

    如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).

    显然,这样转换过来的java.sql.Date往往不是一个规范的java.sql.Date.要保存java.util.Date的精确值,
    我们需要利用java.sql.Timestamp,使用ResultSet的getTimestamp取得数据,这样不会产生截取问题

    java.sql.Date 只存储日期数据不存储时间数据
    // 会丢失时间数据
    preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
    //可以这样来处理
    preparedStatement.setTimestamp(1, new Timestamp(new java.util.Date().getTime()));
    //想要得到完整的数据,包括日期和时间,可以这样
    java.util.Date d = resultSet.getTimestamp(1);
    //这样处理更合适一些,可以避免一些潜在Timestamp 问题
    java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());


    往数据库存储的时候可以接收 java.util.Date类型 再用getTime()方法得到代表那个Date对象的long值,再以这个long值构造一个Timestamp对象 存进数据库中。
    从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个 java.util.Date对象,这样就可以对这个Date对象操作了。比如说 new SimpleDateFormat("yyyyy-MM-dd HH:mm:ss").format(Date)或format(Timestamp)都行~

    参考:http://kingyang85.blog.163.com/blog/static/1287536762010696217335/

  • 相关阅读:
    mysql GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
    MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I MySql开启远程用户登录GRANTALLPRIVILEGESON*.*TO'root'@'%'I
    php中 -> 和 => 和 :: 的用法 以及 self 和 $this 的用法
    mysql case when then else end 的用法
    C/C++ 程序的build过程
    Git 笔记
    English Snippets
    Ubuntu 使用笔记
    在CentOS上安装Sublime Text
    hihoCoder #1379 Emulator
  • 原文地址:https://www.cnblogs.com/babybluevino/p/2797212.html
Copyright © 2011-2022 走看看