我有一个Java应用程序,用户在屏幕上构建他们的SQL select语句。一旦他们进入select,我就用JDBC分析列类型。
对于Oracle,JDBC类型的等效值是java.sql.Types.Timestamp,因为日期包括时间。
问题是,我需要根据列类型来格式化结果集。如果是日期,我需要格式化值YYYY-MM-DD。如果是时间戳,我需要格式化值YYYY-MM-DD HH:MM:SS。
我需要的是在JDBC中区分日期和时间戳结果。有办法做到这一点吗?
样本代码:
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)) 注意:我在野生苍蝇14上运行这个
我尝试将sql连接强制转换到OracleConnection (以获取oracle.sql类型),Wildfly抛出:
不能将org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8转换为oracle.jdbc.OracleConnection
发布于 2019-04-02 02:13:30
您可以使用ResultSetMetdata#getColumnTypeName获取实际的DB类型名称。
检索指定列的特定数据库类型名称。 返回数据库使用的类型名称。如果列类型是用户定义的类型,则返回一个完全限定的类型名称.
https://stackoverflow.com/questions/55426106
复制相似问题