У меня есть 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 Connection к OracleConnection (чтобы получить типы oracle.sql
) и броски Wildfly:
org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8 не может быть приведен
к oracle.jdbc.OracleConnection