Java解析oracle时间戳到date.util.date

Java解析oracle时间戳到date.util.date,java,oracle,date,timestamp,Java,Oracle,Date,Timestamp,我想将oracle时间戳(01-MAY-12 01.00.47.000000000 PM)解析为java.util.Date 我用了这个: Date dateStart=new SimpleDateFormat("yy-MM-dd HH:mm:ss.S").parse("01-MAY-12 01.00.47.000000000 PM"); 但是我得到了这个错误 java.text.ParseException:不可解析日期:“2012-5-1.13.0.47.0” 如果您正试图使用JDBC访问

我想将oracle时间戳(
01-MAY-12 01.00.47.000000000 PM
)解析为
java.util.Date
我用了这个:

Date dateStart=new SimpleDateFormat("yy-MM-dd HH:mm:ss.S").parse("01-MAY-12 01.00.47.000000000 PM");
但是我得到了这个错误

java.text.ParseException:不可解析日期:“2012-5-1.13.0.47.0”


如果您正试图使用JDBC访问它,那么@JB Nizet建议您使用
getTimestamp()
,或者如果您只有字符串并且需要解析到最新版本,那么请按照下面的方法执行

尝试以下格式

01-MAY-12 01.00.47.000000000 PM

yy-MMM-dd hh.mm.ss.SSSSSSSSSS a

    • 您不必解析任何内容。使用其中一个方法,您将直接拥有一个对象,它扩展了
      java.util.Date

      java.sql.Timestamp ts = myResultSet.getTimestamp( … );
      
      这将具有跨数据库和地区的可移植性的额外优势。

      “yy-MM-dd”

      “2012年5月1日”

      你的日数真的是“12”吗?你的年数真的是“01”


      为什么您的错误显示为“2012-5-1.13.0.47.0”,这可能是另一种格式的日期?

      如果使用JDBC 4.2或更高版本以及Java 8或更高版本,那么对于非零纳秒的时间戳,即
      01-MAY-12 01.00.47.99999999
      PMOr,它不能正常工作,您可以通过
      ResultSet::getObject
      方法检索
      java.time.Instant