Domanda

Ho un database Informix con campo data / ora definito come ANNO A SECONDO. Quando mostro questo campo usando JDBC rs.getString (colonna) usa il formato con i millisecondi, quindi questo campo appare come:

2008-12-18 13:58:14.0

Vorrei che usasse solo i campi da ANNO A SECONDO. Ho impostato la variabile di ambiente:

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

ma anche allora ho ottenuto millisecondi. I programmi che utilizzano ODBC non mostrano il millisecondo. Come posso ricevere la stringa TIMESTAMP " da YEAR TO SECOND " solo? Nel mio programma posso controllare i metadati se il campo è TIMESTAMP e quindi tagliare " .0 " ;, ma penso che ci dovrebbe essere un modo più semplice.

Versione server: IBM Informix Dynamic Server Versione 11.50.TC2DE

Versione client: Driver IBM Informix JDBC per IBM Informix Dynamic Server 3.50.JC3DE

Modifica Sembra che tutti gli altri driver JDBC che ho testato (Oracle e PostgreSQL) mostrino colonne Timestamp con millisecondi se uso getString (). Quindi ho usato la soluzione proposta da Todd. Controllo i metatdati e se la colonna è Timestamp allora uso getTimestamp () e lo formatto.

È stato utile?

Soluzione

Se si utilizza JDBC, è possibile utilizzare i metodi rs.getDate (colonna) o rs.getTimestamp (colonna), che restituiscono rispettivamente gli oggetti Date e Timestamp. Quindi hai un oggetto che rappresenta il tempo, piuttosto che una stringa che lo esprime direttamente. Con Date o Timestamp, puoi utilizzare una date formattatore per formattarlo in qualunque rappresentazione String di quel momento tu scelga.

Aggiorna (dopo aver letto i commenti qui sotto): Se si utilizza getDate (), funzionerà comunque per le colonne Timestamp. Ridurrà semplicemente la precisione fino al secondo. In questo modo non devi controllare i metadati, devi solo sapere che la colonna è una specie di data o ora.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top