web-dev-qa-db-fra.com

ResultSet JDBC: J'ai besoin d'un getDateTime, mais il n'y a que getDate et getTimeStamp

J'aimerais obtenir la colonne DATETIME d'une table de base de données Oracle avec JDBC. Voici mon code:

int columnType = rsmd.getColumnType(i);
if(columnType == Types.DATE)
{
    Date aDate = rs.getDate(i);
    valueToInsert = aDate.toString();
}
else if(columnType == Types.TIMESTAMP)
{
    Timestamp aTimeStamp = rs.getTimestamp(i);
    valueToInsert = aTimeStamp.toString();
}
else
{
    valueToInsert = rs.getString(i);
}

Je dois d'abord identifier le type de colonne. Le champ qui m'intéresse est reconnu en tant que Types.DATE, mais il s'agit en réalité d'une DATETIME dans la base de données car il a ce format: "07.05.2009 13:49:32"

getDate tronque l'heure: "07.05.2009" et getString y ajoute ".0": "07.05.2009 13: 49: 32.0"

Bien sûr, je pourrais simplement supprimer le dernier .0 et travailler avec getString tout le temps, mais c'est une solution de contournement sale.

Des idées ? Je cherchais une méthode getDateTime.

A bientôt, Tim

38
Tim
Java.util.Date date;
Timestamp timestamp = resultSet.getTimestamp(i);
if (timestamp != null)
    date = new Java.util.Date(timestamp.getTime()));

Puis formatez-le comme vous le souhaitez.

82
Leos Literak

cela a fonctionné: 

    Date date = null;
    String dateStr = rs.getString("doc_date");
    if (dateStr != null) {
        date = dateFormat.parse(dateStr);
    }

en utilisant SimpleDateFormat.

0
Nikolay Kombarov

La solution que j'ai choisie était de formater la date avec la requête mysql:

String l_mysqlQuery = "SELECT DATE_FORMAT(time, '%Y-%m-%d %H:%i:%s') FROM uld_departure;"
l_importedTable = fStatement.executeQuery( l_mysqlQuery );
System.out.println(l_importedTable.getString( timeIndex));

J'ai eu exactement le même problème… .. Même si ma table mysql contient des dates formatées de la sorte: 2017-01-01 21:02:50 

String l_mysqlQuery = "SELECT time FROM uld_departure;"
l_importedTable = fStatement.executeQuery( l_mysqlQuery );
System.out.println(l_importedTable.getString( timeIndex));

retournait une date formatée comme telle: 2017-01-01 21:02:50.0 

0
Albizia