【发布时间】:2009-05-20 12:34:44
【问题描述】:
我正在使用 JDBC 和 MySQL。我有一个需要包含在结果集中的日期列。不幸的是,我在 Java 中找不到一个类来检索日期。 SQL Date 类已弃用。如何从结果集中获取 Date 对象?
【问题讨论】:
我正在使用 JDBC 和 MySQL。我有一个需要包含在结果集中的日期列。不幸的是,我在 Java 中找不到一个类来检索日期。 SQL Date 类已弃用。如何从结果集中获取 Date 对象?
【问题讨论】:
您使用java.sql.Date。不推荐使用构造函数和一些方法。班级不是。对此感到困惑,比如java.util.Date 或java.util.Calendar?看Making Sense of Java's Dates。
共有三种 JDBC 日期/时间类型:
混淆可能是由于 java.sql.Date 扩展了 java.util.Date 并因此继承了其已弃用的方法。
只需为列的类型使用正确的类型即可。
【讨论】:
我不认为 java.sql.Date 类本身它已弃用,只是它的构造函数之一。您应该可以安全地继续使用它。
【讨论】:
您可以安全地使用 java.sql.Date 类来映射您的 MySQL DATE 类型。 java.sql.Date 类扩展了 java.util.Date 类,因此您可以使用该对象进行所有类型的日期计算。
【讨论】:
旧帖,但无论如何:
我对 java.util.Date 的粒度有问题并切换到 java.util.Timestamp。 我还遇到了时间戳类型的有限粒度(最多几秒)。
数据库中的列被声明为日期,为了获得额外的时间部分,我将其检索为时间戳。问题是它会将值截断为秒。
我研究了允许 6 个小数位的时间戳的 Oracle 默认定义。
我猜是 oracle 定义中的 Date 部分限制了 Java 中的时间戳部分...
干杯, 格拉齐纳
【讨论】:
java.sql.Date。如果要存储时间(小时、分钟、秒),请使用java.sql.Time。如果要存储时间戳(日、月、年、时、分、秒,也称为日期时间),请使用java.sql.Timestamp。根据使用的 DB 和 JDBC 驱动程序,Timestamp 中还有毫秒数。