Вы делаете неявное преобразование в строку, поэтому форматирование определяется настройкой NLS_TIMESTAMP_FORMAT
сеанса вашей базы данных, которая является производной от вашего языкового стандарта Java.Хотя это странный формат, поэтому, возможно, он каким-то образом переопределяется.
Поскольку у вас часто нет контроля над такими вещами, и вы можете получить неожиданное изменение в среде, которая нарушает ваш код, как правило, безопаснееуказать формат в вашем запросе.Если вам действительно нужно получить его с помощью getString()
, а не
select timestamp_field from ...
, сделайте что-то вроде
select to_char(timestamp_field, 'YYYY-MM-DD HH24:MI:SS.FF3') from ...
В качестве альтернативы вы можете изменить свой языковой стандарт;или установите формат в сеансе, выполнив alter session set nls_timestamp_format = 'YYYY-MM-DD HH24:MI:SS.FF3'
перед вашим запросом, но вам придется делать это в каждом сеансе (или использовать триггер входа в систему), и это может потенциально привести к неожиданным последствиям в другом месте, особенно при использовании пула соединений.Явное извлечение данных из базы данных в нужном вам формате является более очевидным и не сломается, если кто-то еще что-то изменит позже.