BeanListHandler 将 db 列时间戳处理为毫秒(纪元)

问题描述 投票:0回答:1

我有时间戳的数据库列。源系统(我们无法控制)将

yyyy-MM-dd HH:mm:ss.SSS
格式的数据插入此列。 我在 dbutils 中使用
BeanListHandler
将包含此列的行映射到一个 bean。所有其他数据类型都按预期工作。 我使用 java.sql.TimeStamp 来映射此列,但我在纪元时间(即以毫秒为单位)中得到它。但我希望它采用存储在数据库中的日期格式,即
yyyy-MM-dd HH:mm:ss.SSS
。 我试着把豆田做成
java,util.Date
但没有运气。有人可以帮我吗

java sql jdbc apache-commons-dbutils
1个回答
0
投票

DB 日期/时间和 Java 日期/时间没有格式。自 1970 年 1 月 1 日起,它们以毫秒(有时是纳秒)存储。

数据库客户端向他们呈现人类可读的字符串。

要使时间戳可读为字符串,请按如下格式设置:

String formattedTimeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(timestampFromDb);

相关说明,

java.sql.Timestamp
设计不佳,使用不受欢迎。根据您的需要尝试
java.time.LocalDateTime
java.time.OffsetDateTime

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");

String formatDateTime = dateTimeFromDb.format(formatter);
© www.soinside.com 2019 - 2024. All rights reserved.