繁体   English   中英

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

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

我正在使用一种通用方法来遍历并将ResultSet转换为String数组。 我想知道为什么数据库中的日期显示2015-01-09时Oracle db值的Date列打印为2015-01-09 00:00:00.0?

这是代码,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以将其删除吗?

您不应该在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");

希望这可以帮助

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

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

请参阅有关此文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM