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方法获取,但只是有可能影响数值精确度。


本文转自茄子_2008博客园博客,原文链接:http://www.cnblogs.com/xd502djj/archive/2011/02/10/1950817.html,如需转载请自行联系原作者。


目录
相关文章
|
11月前
|
SQL Oracle Java
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
197 0
|
Java 数据库连接
JDBC学习(七):操作Blob类型数据
JDBC学习(七):操作Blob类型数据
|
存储 关系型数据库 MySQL
jdbc之操作BLOB类型字段
jdbc之操作BLOB类型字段
jdbc之操作BLOB类型字段
|
Oracle Java 关系型数据库
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
JDBC获取数据库列名-关于 ResultSet 对象中列的类型和属性信息
142 0
|
Java 数据库连接 数据库
使用JDBC(Dbutils工具包)来从数据库拿取map类型数据来动态生成insert语句
前言: 大家在使用JDBC来连接数据库时,我们通过Dbutils工具来拿取数据库中的数据,可以使用new BeanListHandler<>(所映射的实体类.class),这样得到的数据,不知道表的字段名字,我们在往数据库里添加时,需要自己来挨个写字段,非常麻烦! 于是,小编想到通过MapListHandler(),结果集为一个List<Map<String, Object>>,map中key为数据库字段名字,value为对应的值,这样就可以实现insert语句动态拼接了!!
168 3
|
SQL Java 数据库连接
|
存储 关系型数据库 MySQL
JDBC添加图片(Blob)类型的数据
学习记录:添加图片(Blob)类型的数据
98 0
|
Java 关系型数据库 MySQL
Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
164 0
Spring练习,使用Properties类型注入方式,注入MySQL数据库连接的基本信息,然后使用JDBC方式连接数据库,模拟执行业务代码后释放资源,最后在控制台输出打印结果。
|
SQL druid Java
Java 执行 Postgresql Jdbc 类型异常时,复杂sql难定位的解决方案
Java 执行 Postgresql Jdbc 类型异常时,复杂sql难定位的解决方案
1216 0
Java 执行 Postgresql Jdbc 类型异常时,复杂sql难定位的解决方案