1 Java中的时间类型

总结:sql中的时间转 util的时间直接赋值即可;反过来,必须先吧util下的时间转换成毫秒,再通过sql的构造器生成sql的时间格式。

1 Java中的时间类型

java.sql包下给出三个与数据库相关的日期时间类型,分别是:

l Date:表示日期,只有年月日,没有时分秒。会丢失时间;

l Time:表示时间,只有时分秒,没有年月日。会丢失日期;

l Timestamp:表示时间戳,有年月日时分秒,以及毫秒。

这三个类都是java.util.Date的子类。

2 时间类型相互转换

把数据库的三种时间类型赋给java.util.Date,基本不用转换,因为这是把子类对象给父类的引用,不需要转换。

java.sql.Date date = …

java.util.Date d = date;

java.sql.Time time = …

java.util.Date d = time;

java.sql.Timestamp timestamp = …

java.util.Date d = timestamp;

当需要把java.util.Date转换成数据库的三种时间类型时,这就不能直接赋值了,这需要使用数据库三种时间类型的构造器。java.sql包下的Date、Time、TimeStamp三个类的构造器都需要一个long类型的参数,表示毫秒值。创建这三个类型的对象,只需要有毫秒值即可。我们知道java.util.Date有getTime()方法可以获取毫秒值,那么这个转换也就不是什么问题了。

java.utl.Date d = new java.util.Date();

java.sql.Date date = new java.sql.Date(d.getTime());//会丢失时分秒

Time time = new Time(d.getTime());//会丢失年月日

Timestamp timestamp = new Timestamp(d.getTime());

3 代码

我们来创建一个dt表:


CREATE TABLE dt(

d DATE,

t TIME,

ts TIMESTAMP

)

下面是向dt表中插入数据的代码:


@Test

public void fun1() throws SQLException {

Connection con = JdbcUtils.getConnection();

String sql = "insert into dt value(?,?,?)";

PreparedStatement pstmt = con.prepareStatement(sql);

java.util.Date d = new java.util.Date();

pstmt.setDate(1, new java.sql.Date(d.getTime()));

pstmt.setTime(2, new Time(d.getTime()));

pstmt.setTimestamp(3, new Timestamp(d.getTime()));

pstmt.executeUpdate();

}

下面是从dt表中查询数据的代码:


@Test

public void fun2() throws SQLException {

Connection con = JdbcUtils.getConnection();

String sql = "select * from dt";

PreparedStatement pstmt = con.prepareStatement(sql);

ResultSet rs = pstmt.executeQuery();

rs.next();

java.util.Date d1 = rs.getDate(1);

java.util.Date d2 = rs.getTime(2);

java.util.Date d3 = rs.getTimestamp(3);

System.out.println(d1);

System.out.println(d2);

System.out.println(d3);

}

时间类型

数据库类型与java中类型的对应关系:

DATE -> java.sql.Date

TIME -> java.sql.Time

TIMESTAMP -> java.sql.Timestamp

l 领域对象(domain)中的所有属性不能出现java.sql包下的东西!即不能使用java.sql.Date;

l ResultSet#getDate()返回的是java.sql.Date()

l PreparedStatement#setDate(int, Date),其中第二个参数也是java.sql.Date

时间类型的转换:

l java.util.Date -> java.sql.Date、Time、Timestamp

  • 把util的Date转换成毫秒值
  • 使用毫秒值创建sql的Date、Time、Timestamp

  java.util.Date date = new java.util.Date();

  long l = date.getTime();//util的时间获取毫秒值

  java.sql.Date sqlDate = new java.sql.Date(l);

l java.sql.Date、Time、Timestamp -> java.util.Date

  • 这一步不需要处理了:因为java.sql.Date是java.util.Date;
时间: 2024-10-24 23:47:13

1 Java中的时间类型的相关文章

Java中的时间和日期(下)

转载请注明出处:http://blog.csdn.net/wl9739/article/details/51882913 在上篇文章Java中的时间和日期(上)里面,简单介绍了Java中的Date类,Calendar类以及用于格式化的SimpleDateFormater类.使用这些的时候我们会明显地感受到其中的不便之处,比如,Calendar类的月份是从0开始计数的:日期格式输出不够友好,很多情况下都需要使用SimpleDateFormater类来格式化:一些简单得日期计算也比较麻烦等等.所以就

sqlserver中对时间类型的字段转换

获取当前日期利用 convert 来转换成我们需要的datetime格式. select CONVERT(varchar(12) , getdate(), 112 ) 20040912------------------------------------------------------------ select CONVERT(varchar(12) , getdate(), 102 ) 2004.09.12-----------------------------------------

java 中的String类型

java 中的String类型   (1)String类型的数据可以表示所有的数据类型. (2)String中的字符串常量与一般的字符串:                String str0 = "hello";//字符串常量“hello”被预先放到了数据段的字符串常量池中                String str1 = "hello";//直接从常量池中寻找已有的字符串常量                String str2 = new String

java中各种时间格式的转化

http://www.chinaitpower.com/A/2005-01-14/104881.html 使用java.util.Calendar返回间隔天数   static int getDaysBetween (java.util.Calendar d1, java.util.Calendar d2) { if (d1.after(d2)) {  // swap dates so that d1 is start and d2 is end java.util.Calendar swap

Java中的时间日期处理

程序就是输入——>处理——>输出.对数据的处理是程序员需要着重注意的地方,快速.高效的对数据进行处理时我们的追求.其中,时间日期的处理又尤为重要和平凡,此次,我将把Java中的时间日期处理方式进行简单的解析,为自己以后的学习做一个备忘,也为初学者做一个借鉴. 时间,英文Time:日期,英文Date:日历,英文Calendar.Java中注重语义化,也是用以上的名称对时间日期函数和相关类进行命名. 我们将以Java自带的时间日期类和其中的处理函数进行分析. 一.与时间日期有关的类. java.u

详解java中的byte类型

Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于java中byte类型的相关资料,需要的朋友可以参考下. 介绍 byte,即字节,由8位的二进制组成.在Java中,byte类型的数据是8位带符号的二进制数. 在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]. 取值范

MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】

用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等于一个字节. 总结: 如果无扩展需求,仅仅表示2值逻辑的话, Bit 绝对是首选 如果有扩展需求,以后可能多余2个值,就用 tinyint char不考虑,写代码时要带单引号,超麻烦 转: MySql数据库类型bit等与JAVA中的对应类型 2018年12月04日 16:43:58 Ming3394

java中的null类型---有关null的9件事

摘自 https://blog.csdn.net/qq_25077777/article/details/80174763 今天听到一个问题,java中的null类型,null竟然是一种类型 java语言中有两种类型,一种是基本类型,还有一种是引用类型.还有一个特殊的null类型即表达式null的类型,它没有名字. 因为null类型没有名字,所以不可能声明为null类型的变量或者转换为null类型. null引用是null类型表达式唯一可能的值. null引用可以转换为任意引用类型. 实际上,程

「Flink」Flink中的时间类型

Flink中的时间类型和窗口是非常重要概念,是学习Flink必须要掌握的两个知识点. Flink中的时间类型 时间类型介绍 Flink流式处理中支持不同类型的时间.分为以下几种: 处理时间 Flink程序执行对应操作的系统时间.所有基于时间的操作(例如:时间窗口)都将使用运行相应operator的系统时间.例如:每个小时的处理时间窗口包括在系统时间范围内所有operator接收到的记录.例如:如果应用程序在09:15开始运行,则第一个滚动时间窗口将包括:09:15 – 10:00 之间的处理事件