java.util.Date 和Java.sql.Date、java.sql.Time、java.sql.Timestamp的互换

1、sql时间类型转util时间类型

  原理:java.sql.Date、java.sql.Time、java.sql.Timestamp三个类都是java.util.Date的子类,故根据多态的设计原理,父类引用指向子类对象,可以直接转换。

  即:

    java.util.Date uDate = new java.sql.Date(0);

    或:  java.util.Date uDate = new java.sql.Time(0);

    或:  java.util.Date uDate = new java.sql.Timestamp(0);

  利用泛型设计toUtil()方法:

    public static <T extends java.util.Date> java.util.Date toUtil(T t){
        java.util.Date date = t;
        return date;
    }

   

2、util时间类型转sqll时间类型

  原理:通过java.util.Date类的getTime()方法可以轻而易举的获得当前时间的毫秒数,这个long类型的数据至关重要,是实例化三个sql时间类型的构造器必要参数。

  即:

    long millionSeconds = java.util.Date.getTime();

    java.sql.Date sDate = new java.sql.Date(millionSeconds);

    或:  java.sql.Time sTime = new java.sql.Time(millionSeconds);

    或:  java.sql.Timestamp sTimestamp = new java.sql.Timestamp(millionSeconds);

  利用泛型设计toSql()方法:

    首先设计一个枚举类Type:

    enum Type {
      DATE, TIME, TIMESTAMP
    }

    其中规定了从toSql()方法中要获取的sql时间类型:DATE对应java.sql.Date,TIME对应java.sql.Time,TIMESTAMP对应java.sql.Timestamp。

  

    

    public static <T extends java.util.Date> T toSql(java.util.Date utilDate,
            Type type) {
        T t = null;
        long millionSeconds = utilDate.getTime();

        switch (type) {
        case DATE:
            t = (T) new java.sql.Date(millionSeconds);
            break;
        case TIME:
            t = (T) new java.sql.Time(millionSeconds);
            break;
        case TIMESTAMP:
            t = (T) new java.sql.Timestamp(millionSeconds);
            break;
        default:
            break;
        }
        return t;
    }

   java在设计Date类时先设计了util中的Date,随着各大数据库的出现,原先的Date类型无法满足数据库中所保存的时间类型,这才衍生出了sql中的各种时间类,对Mysql数据库的支持使得java.sql.Date、java.sql.Time、java.sql.Timestamp应运而生。呵呵,这只是我个人的理解而已。

时间: 2024-12-26 19:20:58

java.util.Date 和Java.sql.Date、java.sql.Time、java.sql.Timestamp的互换的相关文章

《java.util.concurrent 包源码阅读》02 关于java.util.concurrent.atomic包

Aomic数据类型有四种类型:AomicBoolean, AomicInteger, AomicLong, 和AomicReferrence(针对Object的)以及它们的数组类型, 还有一个特殊的AomicStampedReferrence,它不是AomicReferrence的子类,而是利用AomicReferrence实现的一个储存引用和Integer组的扩展类 首先,所有原子操作都是依赖于sun.misc.Unsafe这个类,这个类底层是由C++实现的,利用指针来实现数据操作 关于CAS

java----数据结构与算法----JavaAPI:java.util.Collection接口

Java API--java.util.Collection接口 /** * @author chen * @date 20170317 * @description:本程序讲述Collection接口 * java.util.Collection * 概述:Collection接口是Set和List接口的父接口,Collection接口中定义了一些 * 用于集合元素操作的方法,被其子接口以及子接口的实现类所继承 * 构造函数 * java中接口不能有构造函数 * 成员函数: * [1]概述,由

java----数据结构与算法----集合元素的遍历:迭代器--------&gt;JavaAPI:java.util.Iterator+java.util.ListIterator

概述: 迭代器用于集合元素的遍历 迭代器有两种,分别是Iterator和ListIterator Iterator可以用于任何类型集合的遍历 ListIterator只能用于List集合的遍历 ListIterator接口继承了Iterator接口,所以前者拥有后者所定义的所有成员函数,同时,ListIterator还添加了一些具有List集合特性的操作函数,如按照索引访问集合元素.替换/添加集合元素等等 java.util.Iterator /** * @author chen * @date

java----数据结构与算法----JavaAPI:java.util.List接口

java.util.List接口 /** * @author lxrm * @date 20170307 * @description 本程序讲述java.util.List接口的用法 * java.util.List * 概述: * 1)List接口是Collection接口的子接口,所以List接口拥有Collection接口所定义的所有成员函数 * 除了有其父接口Collection中所定义的所有函数之外,List接口也添加了自己的函数,使得List集合拥有自己的特色 * List接口中新

java.util.zip.ZipException: error in opening zip file

今天项目升级,出现了很奇葩的问题.在本地和测试环境测试好好的,将项目打包成war(每次都这样打包)然后上传到阿里云服务器,启动tomcat一直报如下错误: java.util.zip.ZipException: error in opening zip file at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(ZipFile.java:220) at java.util.zip.ZipFi

Java中的日志——Java.util.logging、log4j、commons-logging

Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging.其中log4j和commons-logging都是apache软件基金会的开源项目.这三种方式的区别如下: Java.util.logging,JDK标准库中的类,是JDK 1.4 版本之后添加的日志记录的功能包. log4j,最强大的记录日志的方式.可以通过配置 .properties 或是 .xml 的文件, 配置日志的目的地,格式等等.

启动TOMCAT报错 java.util.zip.ZipException: invalid LOC header (bad signature)

报错信息大致如下所示: at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:303) at org.apache.catalina.startup.Bootstrap.main(Bootstr

[java ] java.util.zip.ZipException: error in opening zip file

严重: Failed to processes JAR found at URL [jar:file:/D:/tools/apache-tomcat-7.0.64_2/webapps/bbs/WEB-INF/lib/org.restlet.ext.servlet-2.3.0.jar!/] for static resources to be included in context with name [jar:file:/D:/tools/apache-tomcat-7.0.64_2/webap

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/xiaozao_web]]

二月 20, 2017 11:30:28 上午 org.apache.tomcat.util.digester.SetPropertiesRule begin警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:xiaozao_web' did not find a matching property.二月 20, 2

Jakob Jenkov 写的 java.util.concurrent API 指南

1. java.util.concurrent - Java 并发工具包 Java 5 添加了一个新的包到 Java 平台,java.util.concurrent 包.这个包包含有一系列能够让 Java 的并发编程变得更加简单轻松的类.在这个包被添加以前,你需要自己去动手实现自己的相关工具类.本文我将带你一一认识 java.util.concurrent 包里的这些类,然后你可以尝试着如何在项目中使用它们.本文中我将使用 Java 6 版本,我不确定这和 Java 5 版本里的是否有一些差异.