java - 使用 ResultSet.getString() 还是 ResultSet.getTimestamp() 来获取时间戳更好?

标签 java date timestamp resultset

在从 Postgres 或 Oracle 检索时间戳时(我们称之为 startDate),使用 resultSet.getString("startDate") 调用或 resultSet.getTimestamp(“开始日期”)

目前我正在使用 resultSet.getString("startDate") 并且它工作正常,但我想到使用 getTimestamp() 可能是更好的做法.

是否有既定的最佳实践?对时间戳使用 ResultSet.getString() 是否会产生任何意外后果?

最佳答案

Is it better to use ResultSet.getString() or ResultSet.getTimestamp() to get a timestamp?

都不是。

获取日期时间对象比获取字符串更好,因为它可以更好地表示事物的含义和含义,并且应该更适合 Java 程序中的进一步操作。

同时,使用 java.time 中的现代日期时间类比使用老式 Timestamp 类要好得多。后者存在相当大的设计问题,长期以来一直被认为是过时的。

JDBC 驱动程序略有不同,但看看您是否可以获得正确的时间,例如 InstantOffsetDateTime,或者如果其他所有方法都失败,则使用 结果集中的 >LocalDateTime。在所有情况下都使用两个参数的 getObject 方法。例如:

Instant instant = resultSet.getObject("startDate", Instant.class);

JDBC 4.2指定应以这种方式支持 java.time 类。我相信当前所有 SQL 数据库引擎都具有 JDBC 4.2 兼容驱动程序。

仅当您无法使用 Java 8 或更高版本时,才需要在代码中获取 Timestamp 。接下来使用 ThreeTen-Backport 中的 java.time 类版本并使用 DateTimeUtils ThreeTen-Backport 中的类用于转换您的 Timestamp,最好转换为 Instant,但如果由于时区问题而恰好给您提供了错误的即时信息,则使用 本地日期时间。示例:

Instant instant = 
    DateTimeUtils.toInstant(
        resultSet.getTimestamp("startDate")
    )
;

关于java - 使用 ResultSet.getString() 还是 ResultSet.getTimestamp() 来获取时间戳更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53659344/

相关文章:

java - 在 Java 中以 HTTP 格式获取日期

java - 如何在 Jenkins 执行期间管理每个构建的特定文件?

mysql - Laravel 按日期排序,空日期总是在最后

java - 如何显示最后六个日期,java.util.Date?

jquery - 有人可以解释为什么在 jQuery UI Datepicker 中会出现这样的情况吗?

html - (HTML/CSS)从同一页面链接到嵌入式YouTube视频的特定时间

mysql - 比较 MySQL 中的两个时间戳

java - 如何将java项目集成到现有的Android Studios项目中

用于生成 vsd 或 vdx 文件的 Java API

mysql通过时间戳获取最新记录而无需子查询