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

Java ResultSet.getString() for Date field displaying 00:00:00.0

我正在使用通用方法循环遍历并将 ResultSet 转换为 String 数组。我想知道为什么 Oracle 数据库值中的 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 删除它的通用方法的最佳选择吗?

Oracle DATE 数据类型同时包含日期和时间。所以这并不奇怪——它是 Oracle。

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

参见docs

您不应该对日期数据类型使用 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");

希望对您有所帮助