java.util.Date和java.sql.Date区别及互相转换

本文介绍了Java中java.sql.Date与java.util.Date的区别及如何进行相互转换。java.sql.Date主要用于SQL语句,仅包含日期;java.util.Date则广泛用于表示时间。此外,还提供了具体的示例代码来展示两种类型的转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考链接

区别:
  • java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分,一般在读写数据库的时候用,PreparedStament的setDate()的参数和ResultSet的getDate()方法的都是java.sql.Date。
  • java.util.Date 是在除了SQL语句的情况下面使用,是常用的表示时间的类,我们通常格式化或者得到当前时间都是用它。
  • java.util.Datejava.sql.Date 的父类,即:继承关系:java.lang.Object ==> java.util.Date ==> java.sql.Date
相互转换

java.sql.Date转java.util.Date

@Test
public void test07(){
    /*
     *  java.sql.Date ====> java.util.Date
     */
    java.sql.Date date0 = new Date(System.currentTimeMillis());
    System.out.println("date0==========="+date0);
    java.util.Date date = new java.util.Date(date0.getTime());
    System.out.println("date==========="+date);
}

在这里插入图片描述
可以看出,数据库中的日期默认格式是 yyyy-MM-dd 的。

java.util.Date转java.sql.Date

@Test
public void test08(){
    /*
     *  java.sql.Date ====> java.util.Date
     */
    java.util.Date utilDate = new java.util.Date();
    System.out.println(utilDate);
    java.sql.Date sqlDate = new Date(utilDate.getTime());
    java.sql.Time sqlTime = new Time(utilDate.getTime());
    java.sql.Timestamp stp = new Timestamp(utilDate.getTime());
    System.out.println("=========="+sqlDate);
    System.out.println("=========="+sqlTime);
    System.out.println("=========="+stp);
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    System.out.println(sdf.format(utilDate));
    System.out.println(sdf.format(sqlDate));
    System.out.println(sdf.format(sqlTime));
    System.out.println(sdf.format(stp));
}

在这里插入图片描述

可以看出java.util.Date初始化的日期格式很复杂,然后通过java.sql.Date的各种方法可以分别获取对应的日期和时间。并且都能用SimpleDateFormat格式化。

如果要分别得到 年,月,日,可以这样

SimpleDateFormat sy = new SimpleDateFormat("yyyy");
SimpleDateFormat sM = new SimpleDateFormat("MM");
SimpleDateFormat sd = new SimpleDateFormat("dd");
System.out.println("year======"+sy.format(utilDate));
System.out.println("Month======"+sM.format(utilDate));
System.out.println("day======"+sd.format(utilDate));

在这里插入图片描述
目前就了解到这里,后续有机会再增加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值