util包和sql包里的Date类区别,该用哪一个?

简介: util包和sql包里的Date类区别,该用哪一个?

java.util.date是java.sql.date的父类,其中java.util.date用于除了数据库以外的任何地方(实际上也可以用于数据库)。两者都有getTime的方法(获取long类型)。所以可以互相转换


java.sql.date date_sql = new java.sql.date(System.currentTime());
java.util.date date = new java,util.date(date_sql.getTime());


反过来转换也是一样的。

另一种转换时:


java.util.date date = new java.util.date(date_sql);//用子类创建父类


preparement中getDate()与setDate(datesql)中返回与传入的参数都是java.sql.date,所以要先进行转换

java.sql.date 没有无参的构造函数,必须传值,java.util.date可以使用无参构造函数,获取的是当前的时间


java.sql.date的时间格式是年-月-日,没有时间部分。

强制从datesql获取时分秒,会抛异常。

但是不代表没有时间部分的精度。


datesql.getTime() == date.getTime()   //true


两个对象都能进行格式化,使用类SimpleDateFormat


SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd  hh:mm:ss");
java.util.Date date = new java.util.Date();
System.out.println(simpleDateFormat.formate(date));
java.sql.Date dateSql = new java.sql.Date(date.getTime());
System.out.println(simpleDateFormat.formate(dateSql));  // 通过format转换后可以显示时分秒


注:java.sql.date 通过格式化后可以显示时分秒,也就是他时分秒的精度并没有丢失


java.util.Date表示特定的瞬间,精确到毫秒


java.sql.Date一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”


java.sql.Date为 java.util.Date的一个子类,继承了java.util.Date中的方法,只不过两者的tostring()不同, java.sql.Date对其进行了重写。


java.util.Date把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 输出


java.sql.Date 则格式化日期转义形式 yyyy-mm-dd 输出。


总结:

正因为他们之间有继承的关系,所以实际上,在JDBC与数据库交互的时候,用哪一个Date都是可以的,只是侧重点不同而已。 (实际上项目中大部分还是用util包中的Date)


目录
相关文章
|
7月前
|
SQL Perl
PL/SQL Developer 注册机+汉化包+用户指南
PL/SQL Developer 注册机+汉化包+用户指南
78 0
|
27天前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
7月前
|
SQL 关系型数据库 数据库
实时计算 Flink版操作报错之使用SQL 将 PostgreSQL 的 date 类型字段转换为 TIMESTAMP 类型时遇到报错,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
4月前
|
SQL 数据库
|
5月前
|
SQL 存储 NoSQL
. NoSQL和SQL的区别、使用场景与选型比较
【7月更文挑战第30天】. NoSQL和SQL的区别、使用场景与选型比较
88 15
|
4月前
|
SQL 数据挖掘
|
4月前
|
SQL Java 数据库连接
|
6月前
|
SQL 存储 关系型数据库
SQL Date 函数
SQL Date 函数
60 3
|
5月前
|
SQL
常用工具类---SQL工具,HTTP工具
SQL工具,HTTP工具,两个实用小工具~~~
|
6月前
|
分布式计算 DataWorks 大数据
MaxCompute产品使用合集之odps.sql.mapper.split.size和odps.stage.mapper.split.size这两个参数的区别是什么
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。