Pergunta

Eu tenho banco de dados Informix com o campo timestamp definido como ANO PARA SEGUNDA. Quando eu mostrar esse campo usando JDBC rs.getString (coluna) que usa o formato com milisegundos para que este campo se parece com:

2008-12-18 13:58:14.0

Eu gostaria que ele use apenas campos de ano para a segunda. I conjunto variável de ambiente:

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

mas mesmo assim eu tenho milisegundos. Os programas que utilizam ODBC não mostram milisecond. Como posso receber TIMESTAMP string "ANO PARA SEGUNDA" única? No meu programa eu posso verificar metadados se o campo é TIMESTAMP e depois cortar" .0" , mas eu acho que deveria haver maneira simplier.

Versão do servidor: IBM Informix Dynamic Server Versão 11.50.TC2DE

A versão do cliente: IBM Informix JDBC Driver para IBM Informix servidor 3.50.JC3DE dinâmico

Editar Parece que todos os outros drivers JDBC que eu testei (Oracle e PostgreSQL) mostra colunas timestamp com milisegundos se eu usar getString (). Então eu usei solução proposta por Todd. Eu verifico metatdata e se a coluna é Timestamp então eu uso getTimestamp () e formatá-lo.

Foi útil?

Solução

Se você estiver usando JDBC, você pode usar o rs.getDate (coluna) ou métodos rs.getTimestamp (coluna), que data de retorno e Timestamp objetos respectivamente. Então você tem um tempo objeto representando, ao invés de uma String expressá-la diretamente. Com data ou hora, você pode usar um href="http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html" rel="nofollow noreferrer"> data para formatá-lo a qualquer representação string do que o tempo que você escolher.

Atualizar (depois de ler comentários abaixo): Se você usar getDate (), ele irá ainda trabalhar para colunas timestamp. Ela só vai reduzir o baixo de precisão para o segundo. Dessa forma, você não tem que verificar os metadados, você apenas tem que saber que a coluna é algum tipo de timestamp ou data.

scroll top