• jdbc 日期时间相关的类型


    1、sql.Date

      sql包中的日期类Date是util包中Date类的子类,实际上也是util.Date类的子集。它只处理年月日,而忽略小时和分秒,用以代表SQL的DATE信息。

      Date类的构造方法为:

      public Date(int year, int mouth, int day)

    其中参数格式同util.Date类的构造方法一样,年参数为所需设定的年份减去1900所得的整数值,月参数为0至11,日参数为1至31。如1998年1月23日所对应创建日期类的方法调用为:

      Date d=new Date(98,0,23);

      Date类还提供两个与String类互相转换的方法,分别是:

      public static Date valueOf(String s)

    将字符串类参数转换为日期类对象。其中String类参数S的格式为“年-月-日”,加“1997-04-12”。

      public String toString()

    将日期类对象转换为String类对象表示,同样采用“年-月-日”的格式。

      2、sql.Time

      该类是util.Date类的子类,也是它的一个子集。在Time类里,只处理小时和分秒,代表SQL的TIME类型。它与sql.Date合起来才表示完整的util.Date类信息。

      Time类的构造方法为:

      public Time(int hour,int minute,int second)

    其中小时参数值为0至23,分秒参数取值均为0至59。

      与sql.Date一样,Time类也定义了两个与String类互相转换的函数ValueOf和String。不同的是String类对象的格式为“小时:分:秒”,如“12:26:06”。

      3、sql.Timestamp

      这个类也是util.Date类的子类,其中除了包含年月日、小时和分秒和信息之外,还加入了纳秒信息(nanosecond),1纳秒即1毫微秒。Timestamp类用来代表SQL时间戳(Timestamp)类型信息。

      Timestamp类的构造方法为:

      public Timestamp(int year, int mouth, int date, int hour, int minute, int second, int nano)其中纳秒参数的取值从0至999,999,999,其余各参数同前。

      Timestamp类特别定义了设置和获得纳秒信息的方法,分别是

      public getnanos()

      获取时间戳的纳秒部分

      public void setNanos(int n)

      以给定数值设置时间戳的纳秒部分

      4、sql.Types

      Types类是Object类的直接子类。在这个类中以静态常量的形式定义了可使用的SQL的数值类型。所有这些类型常量都以前缀

      public final static int

    的形式标明是公有静态整数,且不可改动。具体的类型名和含义如表11.1所示。其中OTHER用来代表数据库定义的特殊数据,可以用getObject或setObject方法将其映射为一个Java的Object对象。

      表11.1 Types中定义的SQL类型

    类型名

    含义

    BIGINT

    长整型数

    BINARY

    二进制数

    BIT

    比特数

    CHAR

    字符型

    DATE

    日期型

    DECIMAL

    十进制数

    DOUBLE

    双精度数

    FLOAT

    浮点数

    INTEGER

    整数

    LONGVARBINARY

    可变长型二进制数

    LONGVARCHAR

    可变长型字符

    NULL

    空类型

    NUMERIC

    数值型

    OTHER

    其他类型

    REAL

    实数

    SMALLINT

    短整型

    TIME

    时间类型

    TIMESTAMP

    时间戳类型

    TINYINT

    微整型

    VARBINARY

    可变二进制数

    VARCHAR

    可变字符型

    二、SQL与Java

        由于SQL数据类型与Java的数据类型不一致,因而在使用Java类型的应用程序与使用SQL类型的数据库之间,需要某种读写类型转换机制。实际上我们前面介绍的ResultSet类的“get”系列方法,Statement及其子类的“set“系列方法和registerOutParameter方法,都是这一转换机制的组成部分。

      需要进行的读写转换包括三种情况:

       第一种情况是从数据库中读取数值后,存放在ResultSet对象中的是SQL类型的数据。而调用“get”系列方法时,JDBC才将SQL类型转换为指定的Java类型 。在一般情形下,SQL类型相对应的Java类型如表11-2所示。

      表11.2 SQL类型一般所对应的Java类型

    SQL type

    Java type

    CHAR

    java.lang.String

    VARCHAR

    java.lang.String

    LONGVARCHAR

    java.lang.String

    NUMERIC

    java.lang.Bignum

    DECIMAL

    java.lang.Bignum

    BIT

    boolean

    TINYINT

    byte

    SMALLINT

    short

    INTEGER

    int

    BIGINT

    long

    REAL

    float

    FLOAT

    double

    DOUBLE

    double

    BINARY

    byte[]

    VARBINARY

    byte[]

    LONGVARBINARY

    byte[]

    DATE

    java.sql.Date

    TIME

    java.sql.Time

    TIMESTAMP

    java.sql.Timestamp

      当然,在使用时用户可以指定将SQL类型转换为某个需要的特定类型而不遵循表11.2。例如在结果集中的某个FLOAT型数值,依标准转换应用使用getDouble方法获取,但实际上按用户的不同需求也可以使用getFloat,getInt,甚至gefByte方法获取,但只是有可能影响数值精确度。

  • 相关阅读:
    py.turtle学习笔记(简单图形绘制)
    eclipse Network Connections
    EntityFramework 6 使用注意事项汇总
    Web发展过程中的一些设计思想和软硬件系统构建方式的一段话
    Fody is only supported on MSBuild 16 and above. Current version: 15
    .net 程序优化的原则-C#语言元素相关
    .net 事务
    关于IIS部署网站后 浏览器HTTP 错误 404.7 请求筛选模块被配置为拒绝该文件扩展名。
    准备学习的书籍列表
    在本地搭建Git厂库并把自己得代码上传到远程厂库
  • 原文地址:https://www.cnblogs.com/ziq711/p/5590652.html
Copyright © 2020-2023  润新知