首页 > 解决方案 > 我们如何在java中转换格式时间戳

问题描述

我将 java 与 mysql 连接起来,从中获取 sql timestamp data = "2021-03-09 14:33:05.095".{TIMESTAMP(0)}
现在我需要将该值存储到 oracle 中。但在 oracle 中,时间戳格式如下:07-DEC-17 06.16.35.261000000 PM.{TIMESTAMP(6) }

我们如何转换时间戳格式?

标签: java

解决方案


数据库中的日期时间数据类型没有“格式”,因为它们不是文本的。要在数据库和 Java 之间交换日期时间值,请使用日期时间对象。

将您的字符串输入解析为LocalDateTime.

LocalDateTime ldt = LocalDateTime.parse( "2021-03-09 14:33:05.095".replace( " " , "T" ) ) ;

使用类似于 SQL 标准类型的数据类型的列存储在数据库中TIMESTAMP WITHOUT TIME ZONE

  • 对于 MySQL,该列的类型必须为DATETIME.
  • 对于 Oracle DB,列的类型必须是TIMESTAMP( not TIMESTAMP WITH TIME ZONE )。

发送您的日期时间对象。

myPreparedStatement.setObject( … , ldt ) ;

恢复。

LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class ) ;

其中一条评论建议使用java.sql.Timestamp. 不要那样做。那个设计不佳的类已经过时,几年前被JSR 310 中定义的现代java.time类所取代。

所有这些都已经在 Stack Overflow 上多次介绍过。搜索以了解更多信息。


推荐阅读