我的表格WRITE_DATE_DATA
包含DATE_DATA
列(DATE
类型)和TIMESTAMP_DATA
(TIMESTAMP(6)
类型)。
当我执行时:
ResultSet rsmeta = ps.executeQuery("Select DATE_DATA,TIMESTAMP_DATA from WRITE_DATE_DATA")
ResultSetMetaData rsmeta = resultSet.getMetaData() ;
int imax = rsmeta.getColumnCount() ;
HashMap<String, Integer> hmRsColTypes = new HashMap<String, Integer>();
for ( int ii = 0 ; ii < imax ; ii++ )
{
String strColumn = rsmeta.getColumnName(ii+1);
System.out.println(rsmeta.getColumnType(ii+1));// line 1
System.out.println(rsmeta.getColumnType(ii+1));// line 2
}
输出:
第1行 - TIMESTAMP_DATA
第2行-93 java.sql.TimeStamp类型
第1行 - DATE_DATA
在第一行 - 93类型为java.sql.TimeStamp
DATE_DATE的预期数据类型为91 Type for java.sql.Date
为什么ResultSetMetaData
返回错误的数据类型TimeStamp
而不是Date
数据类型?
这是预期的行为,如果是,那么请分享文件或我应该做些别的事来处理它。
答案 0 :(得分:2)
显示的输出是正确的。就JDBC(和SQL标准)而言,Oracle DATE
是java.sql.Timestamp
(java.sql.Types.TIMESTAMP
),因为它同时具有日期和时间组件。
Oracle DATE
根本不是JDBC和SQL标准中定义的日期。使用java.sql.Date
(和java.sql.Types.DATE
)适用于仅包含日期组件(日,月,年)的类型。