oracle db current_date返回java.sql.Timestamp,而不是java.sql.Date

时间:2018-05-14 19:14:12

标签: oracle jdbc timestamp

oracle db JDBC:

select current_date from dual

它返回一个java.sql.Timestamp,而不是java.sql.Date实例。

select current_timestamp from dule

它返回一个oracle.sql.TIMESTAMPTZ,而不是java.sql.Timestamp实例。

如何让它们返回JDBC java.sql。*标准类型的值?

2 个答案:

答案 0 :(得分:1)

在Oracle中,DATE数据类型包含年,月,日,小时,分钟和秒组件。

在Java中:

  • java.sql.Date班级有年,月,日组成部分。
  • java.sql.Timestamp班级有年,月,日,小时,分钟和第二部分。

Oracle DATE的正确Java数据类型是java.sql.Timestamp而不是java.sql.Date(您可以使用java.sql.Date作为存储过程的返回值等,但它将截断时间组件。)

在Oracle中,CURRENT_TIMESTAMP的数据类型为TIMESTAMP WITH TIME ZONE。在Java中,这相当于oracle.sql.TIMESTAMPTZ类。

答案 1 :(得分:0)

Oracle SQL返回Oracle数据类型。你可以使用trunc(current_date)去掉时间部分(不过它会影响返回类型!)。但是,要使用JDBC获取正确的数据类型,只需在https://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html中使用正确的get方法即可。 getDate方法返回java.sql.DategetTimestamp方法返回java.sql.Timestamp