util.date 和 sql.date 之间的区别? [复制]

Posted

技术标签:

【中文标题】util.date 和 sql.date 之间的区别? [复制]【英文标题】:difference between util.date and sql.date? [duplicate] 【发布时间】:2013-08-07 07:57:08 【问题描述】:

很多人可以帮助我吗?

import java.util.Date;


public class DateDemo 

    public static void main(String [] p)
    
        java.util.Date date1 = new Date();
        @SuppressWarnings("deprecation")
        java.sql.Date date2 = new java.sql.Date(2013, 12, 22);
        System.out.println(date1.compareTo(date2));
    

【问题讨论】:

我想找出日期的实际差异 “日期差异”是什么意思?你真的需要java.sql.Date吗? (如果可能的话,我建议你使用 Joda Time,它的 LocalDate 类型来表示没有时间的日期......) This 线程是一个开始 我认为答案就在这里:***.com/questions/2305973/… 【参考方案1】:

util 包中的日期是日期和时间的组合,而 SQL 包中的日期仅代表日期部分。准确地说,日期包含年、月和日信息,而时间表示小时、分钟和秒信息。 java.util.Date 包含所有年、月、日、小时、分钟和秒信息。事实上,代表 TIME 和 TIMESTAMP 类型的 SQL 数据库的 java.sql.Time 和 java.sql.TimeStamp 更接近于 java.util.Date,它扩展了 java.util.DATE,如果您使用的是 java.util.DATE你的 Class 来表示 DATE 值,最好在数据库中使用 TIMESTAMP 类型,在 JDBC 或 DAO 代码中使用 java.sql.Time。

阅读更多:http://javarevisited.blogspot.com/2012/04/difference-between-javautildate-and.html#ixzz2bBmF4lBd

【讨论】:

【参考方案2】:

    根据 Javadoc,java.sql.Date 是一个围绕毫秒值的瘦包装器,JDBC 使用它来识别 SQL DATE 类型。

    java.sql.Date 只表示没有时间信息的 DATE,而 java.util.Date 表示日期和时间信息。这就是 java.util.Date 不能直接映射到 java.sql.Date 的主要区别。

    为了抑制时间信息并确认 ANSI SQL DATE 类型的定义,java.sql.Date 实例中使用的毫秒值必须“通过将小时、分钟、秒和毫秒设置为零来进行标准化”在时区中与 DATE 实例相关联。换句话说,所有与时间相关的信息都从 java.sql.Date 类中删除。

阅读更多:http://javarevisited.blogspot.com/2012/04/difference-between-javautildate-and.html#ixzz2bBWDwBD0

【讨论】:

以上是关于util.date 和 sql.date 之间的区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 java.util.Date 或 java.sql.Date 之间进行选择

在java.util.Date或java.sql.Date之间进行选择

java中java.util.Date和java.sql.Date区别以及数据库的Date和DateTime

java.util.Date 和 java.sql.Date 有啥区别? [复制]

util.date和sql.date的衔接处理

java.sql.date和java.util.date的区别和转换