Формат строки метки времени Informix JDBC - PullRequest
1 голос
/ 02 января 2009

У меня есть база данных Informix с полем отметки времени, заданным как ГОД ВТОРОЙ. Когда я показываю это поле с помощью JDBC rs.getString (column), оно использует формат с миллисекундами, поэтому это поле выглядит следующим образом:

2008-12-18 13:58:14.0

Я бы хотел использовать только поля ГОД ВТОРОЙ. Я установил переменную среды:

GL_DATETIME=%Y-%m-%D %H:%M:%S

но даже тогда у меня были миллисекунды. Программы, использующие ODBC, не показывают миллисекунды. Как я могу получить строку TIMESTAMP "YEAR TO SECOND" только? В моей программе я могу проверить метаданные, если поле равно TIMESTAMP, а затем вырезать «.0», но я думаю, что должен быть более простой способ.

Версия сервера: IBM Informix Dynamic Server версии 11.50.TC2DE

Версия клиента: Драйвер JDBC IBM Informix для динамического сервера IBM Informix 3.50.JC3DE

EDIT Похоже, что все другие протестированные мной драйверы JDBC (Oracle и PostgreSQL) показывают столбцы меток времени с миллисекундами, если я использую getString (). Поэтому я использовал решение, предложенное Тоддом. Я проверяю метаданные, и если столбец имеет метку времени, тогда я использую getTimestamp () и форматирую его.

1 Ответ

3 голосов
/ 02 января 2009

Если вы используете JDBC, вы можете использовать методы rs.getDate (column) или rs.getTimestamp (column), которые возвращают объекты Date и Timestamp соответственно. Тогда у вас есть объект, представляющий время, а не строка, выражающая его напрямую. С датой или отметкой времени вы можете использовать форматер даты для форматирования в любое строковое представление того времени, которое вы выберете.

Обновление (после прочтения комментариев ниже): Если вы используете getDate (), он все равно будет работать для столбцов Timestamp. Это просто снизит точность до второго. Таким образом, вам не нужно проверять метаданные, вы просто должны знать, что столбец - это какая-то временная метка или дата.

...