Я сделал простой тест, используя таблицу из ответа Джонатана Леффлера:
Informix 7.3 - Объявление типа данных столбца даты со значением по умолчанию в качестве текущей даты при вставке / обновлении
Я использую Jython и JDBC Informix драйвер JDBC.3.70.JC1DE. Тестовый код, использующий метаданные, выглядит следующим образом:
db = DriverManager.getConnection(db_url, usr, passwd)
c = db.createStatement()
rs = c.executeQuery("SELECT * FROM test_datetime")
rsmd = rs.getMetaData()
print('columnCnt: %d' % (rsmd.getColumnCount()))
while (rs.next()):
for i in range(rsmd.getColumnCount()):
col_no = i + 1
print("value: [%s]" % rs.getString(col_no))
print("name: [%s]" % rsmd.getColumnName(col_no))
print("Java type: %d" % rsmd.getColumnType(col_no))
print("Java class name: %s" % rsmd.getColumnClassName(col_no))
print("column type name: %s" % rsmd.getColumnTypeName(col_no))
print('-' * 20)
Вывод для интересных столбцов:
value: [03.01.11]
name: [date_column]
Java type: 91
Java class name: java.sql.Date
column type name: date
--------------------
value: [2011-01-03 00:00:00.0]
name: [datetime_yd]
Java type: 93
Java class name: java.sql.Timestamp
column type name: datetime year to day
--------------------
value: [2011-01-03 10:28:51.0]
name: [datetime_ys]
Java type: 93
Java class name: java.sql.Timestamp
column type name: datetime year to second
--------------------
value: [10:28:51]
name: [datetime_hs]
Java type: 92
Java class name: java.sql.Time
column type name: datetime hour to second
Поэтому правильный ответ для этой версии драйвера JDBC: datetime year to second
сопоставлен с java.sql.Timestamp
.
PS Вы писали, что ваш драйвер отображает это на java.sql.Time
, но, возможно, вы используете какую-то старую версию драйвера Informix JDBC?