Pregunta

Tengo la base de datos Informix con el campo de marca de tiempo definido como AÑO A SEGUNDO. Cuando muestro este campo utilizando rs.getString (columna) de JDBC, utiliza el formato con milisegundos, por lo que este campo se ve así:

2008-12-18 13:58:14.0

Me gustaría usar solo los campos de AÑO A SEGUNDO. Establecí la variable de entorno:

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

pero incluso entonces tengo milisegundos. Los programas que usan ODBC no muestran milisegundos. ¿Cómo puedo recibir la cadena TIMESTAMP " YEAR TO SECOND " ¿solamente? En mi programa puedo verificar los metadatos si el campo es TIMESTAMP y luego cortar " .0 " ;, pero creo que debería haber una forma más sencilla.

Versión del servidor: IBM Informix Dynamic Server Versión 11.50.TC2DE

Versión del cliente: Controlador JDBC de IBM Informix para IBM Informix Dynamic Server 3.50.JC3DE

EDIT Parece que todos los demás controladores JDBC que probé (Oracle y PostgreSQL) muestran columnas de marca de tiempo con milisegundos si uso getString (). Entonces utilicé la solución propuesta por Todd. Verifico metatdata y si la columna es Marca de tiempo, entonces uso getTimestamp () y le doy formato.

¿Fue útil?

Solución

Si está utilizando JDBC, puede usar los métodos rs.getDate (column) o rs.getTimestamp (column), que devuelven los objetos Date y Timestamp respectivamente. Entonces tienes un objeto que representa el tiempo, en lugar de una cadena que lo expresa directamente. Con fecha o marca de tiempo, puede utilizar un fecha formateador para formatearlo en cualquier representación de String de ese momento que elijas.

Actualizar (después de leer los comentarios a continuación): Si usa getDate (), seguirá funcionando para las columnas de marca de tiempo. Solo reducirá la precisión hasta el segundo. De esa manera, no tiene que verificar los metadatos, solo debe saber que la columna es una especie de fecha y hora.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top