64 votes

Un équivalent datetime dans java.sql ? (existe-t-il un java.sql.datetime ?)

Jusqu'à présent, je n'ai pas trouvé de réponse claire à cette question.

J'aimerais savoir quelle est l'équivalence entre un type SQL DATETIME et le type java, en utilisant un PreparedStatement.

J'ai trouvé : http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

Mais il est indiqué que le type SQL "DATETIME" est le même que sql.date, mais lorsque l'on consulte la documentation sur les dates SQL ( http://download.oracle.com/javase/7/docs/api/java/sql/Date.html ), il indique que l'heure est tronquée (tous les zéros).

Ce que je veux, c'est pouvoir spécifier un preparedStatement.setDateTime() ou autre.

La seule autre solution que je vois est d'utiliser un horodatage, mais cela m'obligerait à modifier le type de colonne, alors que je ne peux pas imaginer que quelqu'un d'autre n'ait jamais eu ce problème auparavant ?

Des indices ?

Edit : J'utilise MYSQL.

110voto

Bohemian Points 134107

Le paquetage java.sql comporte trois types de date/heure :

Vous voulez le dernier : java.sql.Timestamp .

Si vous utilisez ces types, vous n'avez pas besoin d'appeler un setter spécifique ; il suffit d'utiliser :

java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a java.sql type:
preparedStatement.setObject(param);

5voto

Olaf Points 4910

L'équivalent du type de données MS SQL Server ou MySQL DATETIME ou du type de données Oracle DATE est java.sql.Timestamp.

1voto

Cristiano Fontes Points 2593

J'ai eu un problème similaire avec mon Mysql qui avait une date SQL et localement dans mon application je n'avais que la date.

J'ai résolu le problème comme suit

java.sql.Date dataStartSql = new java.sql.Date(start.getTime());  

Ensuite, j'ai utilisé setDate normalement, et j'ai utilisé getTimestamp pour récupérer la première valeur.

où start est un objet Date.

1voto

Everton Agner Points 2618

En Java, nous disposons de java.util.Date pour gérer les valeurs de date et d'heure.

En SQL, vous avez communément les dates (uniquement les dates), le temps (uniquement le temps) et DateTime/Timestamp (date et heure).

Dans votre programme Java, vous disposerez toujours de java.util.Date, de sorte qu'à chaque fois que vous définissez des dates/heures/calendriers dans PreparedStatements, choisissez toujours exactement celui dont vous avez besoin, en fonction de la base de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X