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");
希望对您有所帮助
我正在使用通用方法循环遍历并将 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");
希望对您有所帮助