Эквивалентный тип данных Java для хранения значения Informix DATETIME YEAR TO SECOND? - PullRequest
3 голосов
/ 29 декабря 2010

Я хотел отобразить ГОД ИНФОРМАТИЧЕСКОГО ДАННОГО ГОДА НА ВТОРОЙ тип данных Java.

Может ли кто-нибудь дать соответствующий тип данных Java для хранения значения Informix DATETIME YEAR TO SECOND ?


Это ответ: java.sql.Time в соответствии с моим драйвером JDBC.

Ответы [ 5 ]

2 голосов
/ 29 декабря 2010

DATETIME ГОД ВТОРОЙ можно сопоставить с TIMESTAMP согласно этой документации:

http://publib.boulder.ibm.com/infocenter/iwedhelp/v6r0/index.jsp?topic=/com.ibm.db2e.doc/dbsap_b3.html

TIMESTAMP могут быть сопоставлены с java.util.Date.
Если вам нужно выполнить расчет вашей даты, используйте java.util.Calendar:

Calendar calendar = Calendar.getInstance();<br/> calendar.setTime(date);<br/> // Use the roll fonction to alter the date<br/> // For example add one month to your Date<br/> calendar.roll(Calendar.MONTH, 1);<br/> // Get your Date back<br/> date = calendar.getTime();

Используете ли вы какие-либо рамки для отображения ваших данных?

1 голос
/ 03 января 2011

Я сделал простой тест, используя таблицу из ответа Джонатана Леффлера: 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?

0 голосов
/ 29 декабря 2010

да, я получил ваш вопрос .. Вы можете использовать Timestamp Тип данных

ех ....

Timestamp temp;
0 голосов
/ 29 декабря 2010

вы можете использовать java.util.Date, если вы хотите получить доступ к значениям часов, минут и секунд ..

0 голосов
/ 29 декабря 2010

Вы пытались использовать java.sql.Date ?Я ничего не знаю об Informix, но, похоже, это естественный тип для таких данных, нет?

...