Строковый формат временной метки Informix JDBC
Вопрос
У меня есть база данных Informix с полем метки времени, определенным от ГОДА До СЕКУНДЫ.Когда я показываю это поле с помощью JDBC rs.getString(столбец), оно использует формат с миллисекундами, поэтому это поле выглядит следующим образом:
2008-12-18 13:58:14.0
Я бы хотел, чтобы он использовал только поля ОТ ГОДА Ко ВТОРОМУ.Я устанавливаю переменную окружения:
GL_DATETIME=%Y-%m-%D %H:%M:%S
но даже тогда у меня были миллисекунды.Программы, использующие ODBC, не показывают миллисекунды.Как я могу получить только строку ВРЕМЕННОЙ МЕТКИ "ОТ ГОДА До СЕКУНДЫ"?В моей программе я могу проверить метаданные, если поле является отметкой ВРЕМЕНИ, а затем вырезать ".0", но я думаю, что должен быть более простой способ.
Версия сервера:IBM Informix Dynamic Server Версии 11.50.TC2DE
Клиентская версия:Драйвер IBM Informix JDBC для IBM Informix Dynamic Server 3.50.JC3DE
Редактировать Похоже, что все другие драйверы JDBC, которые я тестировал (Oracle и PostgreSQL), показывают столбцы временных меток с миллисекундами, если я использую getString().Поэтому я воспользовался решением, предложенным Тоддом.Я проверяю metatdata, и если столбец является отметкой времени, то я использую getTimestamp() и форматирую его.
Решение
Если вы используете JDBC, вы можете использовать методы rs.getDate(столбец) или rs.getTimestamp (столбец), которые возвращают объекты Date и Timestamp соответственно.Тогда у вас есть объект, представляющий время, а не Строка, выражающая его напрямую.Используя дату или временную метку, вы можете использовать устройство для форматирования даты отформатировать его в любое строковое представление того времени, которое вы выберете.
Обновить (после прочтения комментариев ниже):Если вы используете getDate(), он по-прежнему будет работать для столбцов временных меток.Это просто снизит точность до секунды.Таким образом, вам не нужно проверять метаданные, вам просто нужно знать, что столбец представляет собой какую-то временную метку или дату.