首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法在Oracle/JDBC中区分日期和时间戳?

问是否有方法在Oracle/JDBC中区分日期和时间戳?
EN

Stack Overflow用户
提问于 2019-03-29 22:14:09
回答 1查看 1.2K关注 0票数 8

我有一个Java应用程序,用户在屏幕上构建他们的SQL select语句。一旦他们进入select,我就用JDBC分析列类型。

对于Oracle,JDBC类型的等效值是java.sql.Types.Timestamp,因为日期包括时间。

问题是,我需要根据列类型来格式化结果集。如果是日期,我需要格式化值YYYY-MM-DD。如果是时间戳,我需要格式化值YYYY-MM-DD HH:MM:SS。

我需要的是在JDBC中区分日期和时间戳结果。有办法做到这一点吗?

样本代码:

代码语言:javascript
复制
        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。

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-02 02:13:30

您可以使用ResultSetMetdata#getColumnTypeName获取实际的DB类型名称。

检索指定列的特定数据库类型名称。 返回数据库使用的类型名称。如果列类型是用户定义的类型,则返回一个完全限定的类型名称.

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55426106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档