我使用泛型方法循环并将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来删除它的通用方法的最佳选择吗?
答案 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");
希望这有帮助