有没有办法在 Oracle/JDBC 中区分 DATE 和 TIMESTAMP?
Is there a way to differentiate in Oracle/JDBC between DATE and TIMESTAMP?
我有一个 Java 应用程序,用户可以在其中在屏幕上构建他们的 SQL select
语句。他们输入 select
后,我用 JDBC 分析列类型。
对于 Oracle,JDBC 类型 DATE 的等价物是 java.sql.Types.Timestamp
,因为 DATE 包括时间。
问题是我需要根据列类型格式化结果集。如果是 DATE,我需要格式化值 YYYY-MM-DD
。如果是TIMESTAMP,我需要格式化值YYYY-MM-DD HH:MM:SS
。
我需要的是在 JDBC 中区分 DATE 和 TIMESTAMP 结果。有没有办法做到这一点?
示例代码:
String sql = "select date_col, timestamp_col from some_table";
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData meta = rs.getMetaData();
int count = meta.getColumnCount();
for (int i=1;i <= count;i++) {
int type = meta.getColumnType(i);
System.out.println(type);
}
这会打印两次 93,即 java.sql.Types.Timestamp
。
CREATE TABLE "DB1"."SOME_TABLE"
("SOMENUM" NUMBER(9,0),
"DATE_COL" DATE,
"TIMESTAMP_COL" TIMESTAMP (6),
"ACCOUNT" NUMBER(9,0),
"BALANCE" FLOAT(126))
注意:我在 Wildfly 14运行
我尝试将 sql 连接转换为 OracleConnection(以获取 oracle.sql
类型)并且 Wildfly 抛出:
org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 cannot be cast
to oracle.jdbc.OracleConnection
您可以使用 ResultSetMetdata#getColumnTypeName
获取实际的数据库类型名称
Retrieves the designated column's database-specific type name.
Return type name used by the database. If the column type is a user-defined type, then a fully-qualified type name is returned.
我有一个 Java 应用程序,用户可以在其中在屏幕上构建他们的 SQL select
语句。他们输入 select
后,我用 JDBC 分析列类型。
对于 Oracle,JDBC 类型 DATE 的等价物是 java.sql.Types.Timestamp
,因为 DATE 包括时间。
问题是我需要根据列类型格式化结果集。如果是 DATE,我需要格式化值 YYYY-MM-DD
。如果是TIMESTAMP,我需要格式化值YYYY-MM-DD HH:MM:SS
。
我需要的是在 JDBC 中区分 DATE 和 TIMESTAMP 结果。有没有办法做到这一点?
示例代码:
String sql = "select date_col, timestamp_col from some_table";
ResultSet rs = stmt.executeQuery(sql);
ResultSetMetaData meta = rs.getMetaData();
int count = meta.getColumnCount();
for (int i=1;i <= count;i++) {
int type = meta.getColumnType(i);
System.out.println(type);
}
这会打印两次 93,即 java.sql.Types.Timestamp
。
CREATE TABLE "DB1"."SOME_TABLE"
("SOMENUM" NUMBER(9,0),
"DATE_COL" DATE,
"TIMESTAMP_COL" TIMESTAMP (6),
"ACCOUNT" NUMBER(9,0),
"BALANCE" FLOAT(126))
注意:我在 Wildfly 14运行
我尝试将 sql 连接转换为 OracleConnection(以获取 oracle.sql
类型)并且 Wildfly 抛出:
org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 cannot be cast to oracle.jdbc.OracleConnection
您可以使用 ResultSetMetdata#getColumnTypeName
获取实际的数据库类型名称
Retrieves the designated column's database-specific type name.
Return type name used by the database. If the column type is a user-defined type, then a fully-qualified type name is returned.