精华内容
下载资源
问答
  • java.util.Date 就是在除了SQL语句的情况下面使用,java.sql.Date和java.sql.Timestamp是针对SQL语句使用的。 用于sql(数据库)的:java.sql.Date只能存放年月日,java.sql.Timestamp能存放年月日时分秒 用于非sql的...
  • java.util.Date、java.sql.Date、java.sql.Time和java.sql.Timestamp之间的继承关系 java.lang.Object ....|__java.util.Date ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time 【父类】java.util....

    继承关系

    java.util.Date、java.sql.Date、java.sql.Time和java.sql.Timestamp之间的继承关系
    java.lang.Object
    ....|__java.util.Date
    ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time
    

    【父类】java.util.Date日期格式为:年月日时分秒
    【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]
    【子类】java.sql.Time日期格式为:时分秒
    【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)

    针对不同的数据库选用不同的日期类型

    Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型。
    MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型。

    四种对象内部均使用系统时间作为标准数据

    系统时间:自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,即格林尼治标准时间(GMT)。
    本地时间:根据时区不同打印出来的时间[当时区为GMT+0时,系统时间与本地时间相同]。
    我们使用的是以本地时间为参考标准的。

    String日期格式转换成Date日期格式

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    
    public class a {
     
       //主函数
       public static void main(String[] args)
       {
        //java.util.Date时间格式的转换
        SimpleDateFormat f_utilDate=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String str="2011-5-31 14:40:50";
        try {
              java.util.Date utilDate=f_utilDate.parse(str);
              System.out.println(f_utilDate.format(utilDate));
        } catch (ParseException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
        }
    
        //java.sql.Date时间格式的转换
        SimpleDateFormat f_sqlDate=new SimpleDateFormat("yyyy-MM-dd");
        java.sql.Date sqlDate = java.sql.Date.valueOf("2010-08-20");
        System.out.println(f_sqlDate.format(sqlDate));
       
        //java.sql.Time sqltime时间格式的转换
        SimpleDateFormat f_sqlTime=new SimpleDateFormat("hh:mm:ss");
        java.sql.Time sqltime = java.sql.Time.valueOf("13:44:53");
        System.out.println(f_sqlTime.format(sqltime));
       
        //java.sql.Timestamp时间格式的转换
        SimpleDateFormat f_timestamp=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
        java.sql.Timestamp timestamp = java.sql.Timestamp.valueOf("2010-08-20 14:06:27.186");
        System.out.println(f_timestamp.format(timestamp));
       }
    }
     *******************************************************************************
         //java.util.Date 转换成 java.sql.Date 格式
           try{
                   SimpleDateFormat DateFormate =   new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                   java.util.Date date1 = DateFormate.parse("2011-5-31 14:40:50");
                   java.sql.Date sqlDate = new java.sql.Date(date1.getTime());
                   System.out.println(DateFormate.format(sqlDate));
           }catch (Exception ex) {
                System.out.println(ex.getMessage());
           }
    
           //java.sql.Date 转换成 java.util.Date 格式
           java.sql.Date sqlDate1=java.sql.Date.valueOf("2005-12-12");
           java.util.Date utilDate1=new java.util.Date(sqlDate1.getTime());
           System.out.println("java.sql.Date 转换成 java.util.Date 格式:"+f.format(utilDate1));
    
        //java.util.Date转换java.sql.Timestamp
        new java.sql.Timestamp(new java.util.Date().getTime());//此处IDE报错
    
        //java.util.Date转换java.sql.Time
        new java.sql.Time(new java.util.Date().getTime());
        Timestamp timestamp  = new Timestamp(System.currentTimeMillis());
    

    我们可以使用DateFormat处理字符串来定义时间日期的格式。注:String都是先转换为java.util.Date,然后再转换成所需的格式

    示例:

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Locale;
    
    import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
    
    public class a  {  
        public static void main(String[] args) throws ParseException{  
            try{  
                 String dateString = "2010-08-20 12:00:00.125";   
                  DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS",Locale.ENGLISH);//设定格式  
                 dateFormat.setLenient(false);  
                 java.util.Date utilDate = dateFormat.parse(dateString);//util类型
                 //Timestamp类型,timeDate.getTime()返回一个long型
                 java.sql.Timestamp dateTime = new java.sql.Timestamp(utilDate.getTime());
                 System.out.println(dateTime);  
            }catch(Exception ex){  
                ex.printStackTrace();  
            }       
        }  
    } 
    

    Java中存储MySQL数据库时间类型

    下表为Java类型和MySQL类型的映射表
    在这里插入图片描述
    由图可知,MySQL数据库的时间类型有date、time、datetime、timestamp,其中,MySQL的datetime数据类型对应的是Java的Timestamp数据类型。
    date:只有日期,没有时间,2016-09-21;
    time:只有时间,没有日期,23:42:31;
    datetime:日期时间都有,2016-09-21 23:42:31 。
    timestamp:可以在进行Insert或者update的时候自动的为你插入时间,时间格式:2016-09-21 23:42:31。(注意:没有到毫秒级)

    展开全文
  • …|__java.sql.Date/java.sql.Timestamp /java.sql.Time 【父类】java.util.Date日期格式为:年月日时分秒 【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据] 【子类】java.sql.Time日期格式...

    java.lang.Object

    …|__java.util.Date

    …|__java.sql.Date/java.sql.Timestamp /java.sql.Time

    【父类】java.util.Date日期格式为:年月日时分秒

    【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据]

    【子类】java.sql.Time日期格式为:时分秒

    【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)

    针对不同的数据库选用不同的日期类型.

    如果项目中要返回时间戳,可以用 TimeStamp

    展开全文
  • 在创建 Date 对象的时候,总会有两个选择 java.util.Date、java.sql.Date,我们直观的认为在操作数据库时间字段时,我们使用 java.sql.Date 创建 Date 对象,其他情况下使用 java.util.Date 创建 Date 对象。...

    在创建 Date 对象的时候,总会有两个选择 java.util.Date、java.sql.Date,我们直观的认为在操作数据库时间字段时,我们使用 java.sql.Date 创建 Date 对象,其他情况下使用 java.util.Date 创建 Date 对象。

    类的关系如下图:

    java.util.Date 是 java.sql.Date java.sql.Time java.sql.Timestamp 的父类,java.security.Timestamp 集成与 java.lang.Object 类。

    构造函数

    java.util.Date: 提供了完整的日期时间功能,通过 getTime() 方法可以获取到毫秒数。该类提供了以下几种构造方法:

    public Date() {
        this(System.currentTimeMillis());
    }
    
    public Date(long date) {
        fastTime = date;
    }
    
    @Deprecated
    public Date(int year, int month, int date) {
        this(year, month, date, 0, 0, 0);
    }
    
    @Deprecated
    public Date(int year, int month, int date, int hrs, int min) {
        this(year, month, date, hrs, min, 0);
    }
    
    @Deprecated
    public Date(int year, int month, int date, int hrs, int min, int sec) {
        int y = year + 1900;
        // month is 0-based. So we have to normalize month to support Long.MAX_VALUE.
        if (month >= 12) {
            y += month / 12;
            month %= 12;
        } else if (month < 0) {
            y += CalendarUtils.floorDivide(month, 12);
            month = CalendarUtils.mod(month, 12);
        }
        BaseCalendar cal = getCalendarSystem(y);
        cdate = (BaseCalendar.Date) cal.newCalendarDate(TimeZone.getDefaultRef());
        cdate.setNormalizedDate(y, month + 1, date).setTimeOfDay(hrs, min, sec, 0);
        getTimeImpl();
        cdate = null;
    }
    
    @Deprecated
    public Date(String s) {
        this(parse(s));
    }
    

    java.sql.Date: 该类屏蔽了时间值,只返回年月日,如:yyyy-MM-dd,该类的主要作用是为了与数据库字段的 Date 类型进行匹配。该类没有提供无参的构造函数,只能通过 long 值或者 year month day 进行初始化。我们可以使用 java.util.Date.getTime() 获取到 long 值,然后构造 java.sql.Date 对象。该类提供了以下几种构造方法:

    public Date(long date) {
        // If the millisecond date value contains time info, mask it out.
        super(date);
    
    }
    
    public Date(int year, int month, int day) {
        super(year, month, day);
    }
    

    java.sql.Time: 该类屏蔽了日期值,只返回时分秒,如:HH:mm:ss,该类的主要作用是为了与数据库字段的 Time 类型进行匹配。该类没有提供无参的构造函数,只能通过 long 值或者 hour minute second 进行初始化。我们可以使用 java.util.Date.getTime() 获取到 long 值,然后构造 java.sql.Time 对象。该类提供了以下几种构造方法:

    @Deprecated
    public Time(int hour, int minute, int second) {
        super(70, 0, 1, hour, minute, second);
    }
    
    public Time(long time) {
        super(time);
    }
    

    java.sql.Timestamp: 该类对 java.util.Date 类进行了扩充,该类提供了 getNanos() 方法,通过它可以访问毫微秒数(注:1秒 = 10亿毫微秒),该类的主要作用是为了与数据库字段的 Time 类型进行匹配。该类没有提供无参的构造函数,只能通过 long 值或者 year month date hour minute second nano 进行初始化。我们可以使用 java.util.Date.getTime() 获取到 long 值,然后构造 java.sql.Time 对象。该类提供了以下几种构造方法:

    @Deprecated
    public Timestamp(int year, int month, int date,
                     int hour, int minute, int second, int nano) {
        super(year, month, date, hour, minute, second);
        if (nano > 999999999 || nano < 0) {
            throw new IllegalArgumentException("nanos > 999999999 or < 0");
        }
        nanos = nano;
    }
    
    public Timestamp(long time) {
        super((time/1000)*1000);
        nanos = (int)((time%1000) * 1000000);
        if (nanos < 0) {
            nanos = 1000000000 + nanos;
            super.setTime(((time/1000)-1)*1000);
        }
    }
    

    重新设置时间

    通过 setTime() 函数可以重设日期时间值,方法如下:

    public void setTime(long date) {
        // If the millisecond date value contains time info, mask it out.
        super.setTime(date);
    }
    

    方法说明

    • getYear:返回年份,值为年份减去1900,如当前年份为 2017,则返回值为 2017 - 1900 = 117;
    • getMonth:返回月份,月份是从 0 开始的,如当前月份为 1 月,则返回值为 0;
    • getDate:返回日期,一月中的某天,取值范围为 1 - 31,如日期为 1 月 1 日,则返回值为 1;
    • getDay:返回一周中的某天,取值范围为 0 - 6,对应的星期数:0 = Sunday, 1 = Monday, 2 = Tuesday, 3 = Wednesday, 4 = Thursday, 5 = Friday, 6 = Saturday,如当前是星期一,则返回 1;
    • getHours:返回小时数,取值范围为 0 - 23,如当前时间为 16:17:10,则返回 16;
    • getMinutes:返回分钟数,取值范围为 0 - 59,如当前时间为 16:17:10,则返回 17;
    • getSeconds:返回秒数,取值范围为 0 - 61,61 是由于闰秒的缘故,如当前时间为 16:17:10,则返回 10;
    • getTime:返回从 1970-1-1 00:00:00 GMT 开始到目标时间的毫秒数;
    • getNanos:返回当前时间的毫微秒数,1毫秒 = 1000000毫微秒,1秒 = 1000000000 毫微秒。

    示例

    java.util.Date 示例:

    import java.text.SimpleDateFormat;
    
    public class DateDemo {
    
        public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            java.util.Date utilDate = new java.util.Date();
            System.out.println(sdf.format(utilDate));
            System.out.println("year:" + utilDate.getYear());
            System.out.println("month:" + utilDate.getMonth());
            System.out.println("date:" + utilDate.getDate());
            System.out.println("day:" + utilDate.getDay());
            System.out.println("hours:" + utilDate.getHours());
            System.out.println("minutes:" + utilDate.getMinutes());
            System.out.println("seconds:" + utilDate.getSeconds());
            System.out.println("time:" + utilDate.getTime());
        }
    }
    

    执行结果:

    2017-01-16 16:37:55 520
    year:117
    month:0
    date:16
    day:1
    hours:16
    minutes:37
    seconds:55
    time:1484555875520
    

    java.sql.Timestamp 示例:

    import java.text.SimpleDateFormat;
    
    public class TimestampDemo {
    
        public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
            java.util.Date utilDate = new java.util.Date();
            java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(utilDate.getTime());
    
            System.out.println(sdf.format(sqlTimestamp));
            System.out.println("year:" + sqlTimestamp.getYear());
            System.out.println("month:" + sqlTimestamp.getMonth());
            System.out.println("date:" + sqlTimestamp.getDate());
            System.out.println("day:" + sqlTimestamp.getDay());
            System.out.println("hours:" + sqlTimestamp.getHours());
            System.out.println("minutes:" + sqlTimestamp.getMinutes());
            System.out.println("seconds:" + sqlTimestamp.getSeconds());
            System.out.println("nanos:" + sqlTimestamp.getNanos());
            System.out.println("time:" + utilDate.getTime());
        }
    }
    

    执行结果:

    2017-01-16 16:38:59 571
    year:117
    month:0
    date:16
    day:1
    hours:16
    minutes:38
    seconds:59
    nanos:571000000
    time:1484555939571
    

    可以看出 571毫秒 = 571000000毫微秒,1毫秒 = 1000000毫微秒,1秒 = 1000000000 毫微秒。

    如何将 java.sql.Date 和 java.sql.time 的值转化为 java.util.Date,网上有人提出的方案是获取 java.sql.Date java.sql.Time 两个对象的毫秒数进行相加,然后通过该值构造 java.util.Date 对象,实现代码如下:

    public class DateDemo {
    
    public static void main(String[] args) {
    
        java.sql.Date date = new java.sql.Date(new java.util.Date().getTime());
        java.sql.Time time = new java.sql.Time(new java.util.Date().getTime());
        java.util.Date utilDate = new java.util.Date(date.getTime() + time.getTime());
        System.out.println("date:" + date.getTime());
        System.out.println("time:" + time.getTime());
        System.out.println("utilDate:" + utilDate);
    }
    
    •  

    执行结果如下:

    date:1484557195481
    time:1484557195481
    utilDate:Sat Feb 02 01:59:50 CST 2064
    

    经验证该方案是错误的,java.sql.Date java.sql.time 本身都存储了距离 1970-1-1 00:00:00 GMT的绝对毫秒数,显然通过 getTime 方法取到毫秒数的方案是错误的。最原始的实现方式是通过 getYear getMonth getDate getHours getMinutes getSeconds 实现。

    总结

    java.util.Date 是 java 中标准的日期时间类,java.sql.Date java.sql.Time java.sql.Timestamp 是 Java为了适配数据库字段类型对 java.util.Date 类的封装。

    java.util.Date 中的很多方法已经不被推荐使用了(@Deprecated),取而代之的是 java.util.Calendar,后续的文章会对其进行分析。

    展开全文
  • java.sql.Date - Date <> java.sql.Time - Date <> java.sql.TimeStamp - java.sql.Date <> Date - java.sql.Time <> Date - java.sql.TimeStamp <> Date</p><p>该提问来源于开源...
  • 在web开发中,避免不了对日期的操作,就几种常见的日期...java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp java.lang.Object....|__java.util.Date..........|__java.sql.Date/java.sql.Tim...

    在web开发中,避免不了对日期的操作,就几种常见的日期操作做个总结(部分参考网络,在此表示感谢):

    java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp

     

    java.lang.Object 
    ....|__java.util.Date 
    ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time

    ....|__java.security.Timestamp

     

    java.util.Date日期格式为:年月日时分秒 
    java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据] 
    java.sql.Time日期格式为:时分秒 
    java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒)

    关系:

        java.util.Date这个类是java.sql.Date,  java.sql.Time,  java.slq.Timestamp这三个类的父类。这三个类对java.util.Date类进行了包装。

    联系:

        java.sql.Date类屏蔽了java.util.Date类的时间有关的方法(形如:hh:mm:ss),因此,不可以通过这个类访问时间有关的信息,比如,如果你通过sqlDate.getHour()方法去访问小时信息,此方法会抛出一个IllegalArgumentException异常。这是因为java.sql.Date在继承java.util.Date类的时候对父类进行了重写,禁用了时间访问的方法。之所以这么处理,是为了和数据库的Date数据类型相匹配,数据库的Date数据类行只是保存日期有关的字段。

        Java.sql.Time类屏蔽了java.util.Date的日期有关的字段(形如:yyyy-MM-dd),因此,不能通过这个类访问日期有关的信息,比如:如果你通过sqlTime.getYear()方法去获取年有关的信息,此方法会抛出一个IllegalArgumentException异常。这是因为java.sql.Time在继承java.util.Date类的时候对父类进行了重写,禁用了日期访问的方法。之所以这么处理,是为了和数据库的Time数据类型相匹配,数据库的Time数据类行只是保存时间有关的字段。

      Java.sql.Timestamp字段则对java.util.Date这个类进行了扩充,它在java.util.Date类的基础上增加了毫秒的时间访问控制,因此,你可以通过getNanos()方法去获取时间的毫微秒数(注意此处获取的时间是以毫微秒为单位的,1秒等于十亿毫微秒),同样的,这也是为了和数据库中的Timestamp数据类型进行匹配。

    理清了上述四个类的关系,那么java.util.Date和java.util.Calendar类有什么关系呢?

       Java.util.Calendar类是java.util.Date类的一个更加深入,更加全面的替代。Java.util.Calendar类支持java.util.Date的所有功能,此外,Calendar还引入了多语言,多区域的特性,可以根据需要获取不同区域,不同时区的时间,Calendar还增加了比Date更加方便和快捷的许多操作,如获取一年当中的第几个星期,各个月的天数等便捷的方法。

     

    注意:

    Java.util.Calendar区别与java.util.Date的几个地方也需要注意一下:首先,Calendar增加了毫秒的时间段,通过它可以获取时间点的毫秒值,而java.util.Date只是精确到秒。其次,Calendar过去年的时候是当前年份比如:2010,而Date获取年份的时获取到的是当前年份-1900的一个值(2010-1900=110,因此,你调用getYear后过去的值就是110)。最后Calendar是一个抽象类,之所以能够实例化,是因为此处的Calendar充当了一个类似于工厂的作用,在getInstance方法中实例化了Calendar子类GregorianCalendar,并把它返回给用户使用。

     

    针对不同的数据库选用不同的日期类型 
    ·例如:Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型 
    ·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型

    转载:http://www.iteye.com/topic/1137830

    转载于:https://www.cnblogs.com/cainiao-Shun666/p/7911116.html

    展开全文
  • 在创建 Date 对象的时候,总会有两个选择 java.util.Date、java.sql.Date,我们直观的认为在操作数据库时间字段时,我们使用 java.sql.Date 创建 Date 对象,其他情况下使用 java.util.Date 创建 Date 对象。...
  • 原文:http://www.iteye.com/topic/1137830 java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestampjava.lang.Object....|__java.util.Date..........|__java.sql.Date/java.sql.Timestamp /jav...
  • 在web开发中,避免不了对日期的操作,就几种...java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp java.lang.Object  ….|__java.util.Date  ……….|__java.sql.Date/java.sql.Timestamp /
  • java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和联系
  • 1.Java.util.Date,Java.sql.Date和Java.sql.Timestamp的关系和区别: 针对不同的数据库选用不同的日期类型 Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型 MSSqlserver数据库的...
  • ..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time ....|__java.security.Timestamp java.sql.Date: 该类屏蔽了时间值,只返回年月日,如:yyyy-MM-dd,该类的主要作用是为了与数据库字
  • java.sql.Date,java.sql.Time和java.sql.Timestamp 三个都是java.util.Date的子类(包装类)。 java.sql.Date是java.util.Date的子类,是一个包装了毫秒值的瘦包装器,允许 JDBC 将毫秒值标识为 SQL DATE 值。...
  • 首先java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类) java.sql.Date is not a real date java.sql.Date stores only date informat...
  • java.sql.Date 只能存储日期,不能存储时间java.sql.Timestamp包含时间和日期Java.sql.Date,java.sql.Timejava.sql.Timestamp上面都java.util.Date的子类(包装类)它都有getTime方法返回毫秒数,自然就可以直接构建 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,513
精华内容 3,005
关键字:

java.sql.date

java 订阅