java BeanListHandler将db列Timestamp处理为millseconds(epoch)

q3aa0525  于 2023-03-28  发布在  Java
关注(0)|答案(1)|浏览(99)

我有一个数据库列,它是Timestamp。源系统(我们无法控制)将yyyy-MM-dd HH:mm:ss.SSS的数据插入此列。我在dbutils中使用BeanListHandler将包含此列的行Map到bean。所有其他数据类型都按预期工作。我使用java.sql.TimeStampMap此列,但我以纪元时间(即毫秒)获取此数据。但我希望在数据库中存储的日期格式,即yyyy-MM-dd HH:mm:ss.SSS。我试图使豆作为java,util.Date字段,但没有运气。有人可以帮助我在这里

pgvzfuti

pgvzfuti1#

DB日期/时间和Java日期/时间没有格式。自1970年1月1日起,它们以毫秒(有时为纳秒)存储。
DB客户端向它们呈现人类可读的字符串。
要使时间戳作为字符串可读,请将其格式设置为:

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

与此相关的是,java.sql.Timestamp的设计不好,使用也不好。根据您的需要尝试java.time.LocalDateTimejava.time.OffsetDateTime

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

String formatDateTime = dateTimeFromDb.format(formatter);

相关问题