日期字段的Java ResultSet.getString()显示00:00:00.0

时间:2015-10-15 19:28:56

标签: java oracle date jdbc resultset

我使用泛型方法循环并将ResultSet转换为String数组。我想知道为什么Oracle db值中的Date列打印出2015-01-09 00:00:00.0而数据库中的日期显示为2015-01-09?

以下是代码,Oracle中的col类型是Date

    while(rs.next()) {
        String[] arr = new String[colCount];
        for(int i = 1; i <= colCount; i++) {
            arr[i-1] = rs.getString(i);
        }//end for
        list.add(arr);
    }//end while

这是问题的第1部分,问题的第2部分 - 这是我在这里使用.replace 00:00:00.0来删除它的通用方法的最佳选择吗?

2 个答案:

答案 0 :(得分:1)

Oracle DATE数据类型包含日期和时间。所以这并不奇怪 - 它是甲骨文。

我会亲自将日期转换为java.sql.Date以删除跟踪时间。您可以使用ResultSet.getDate()方法。

请参阅此处的docs

答案 1 :(得分:1)

您不应该在Date数据类型上使用rs.getString()。您应该使用rs.getDate(),然后根据需要解析日期。

示例:

java.sql.Date date = rs.getDate(i);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = dateFormat.format(date);

或者您可以使用TO_CHAR函数直接从数据库中直接获取日期字符串,如下所示:

SELECT TO_CHAR(col1, 'yyyy-mm-dd') AS 'MYDATE' FROM TABLE1;

然后将其作为字符串:

String dateStr = rs.getString("MYDATE");

希望这有帮助