web-dev-qa-db-fra.com

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

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

Je voudrais savoir quel est l'équivalent d'un type DATETIME SQL et du type Java, en utilisant un PreparedStatement.

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

Mais il indique que le type SQL "DATETIME" est le même que sql.date, mais en regardant les documents de date 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 une preparedStatement.setDateTime() ou une sorte.

La seule autre façon que je vois est d'utiliser un horodatage, mais cela nécessiterait que je change 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.

60
Stefan Hendriks

Le package Java.sql a 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; utilisez simplement:

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); 
100
Bohemian

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.

5
Olaf

Dans Java nous avons Java.util.Date pour gérer les valeurs de date et d'heure.

Dans SQL, vous avez généralement des dates (uniquement des dates), de l'heure (uniquement de l'heure) et de DateTime/Timestamp (date et heure).

Dans votre programme Java, vous aurez généralement toujours Java.util.Date, donc chaque fois que vous définissez Dates/Times/DateTimes dans PreparedStatements, choisissez toujours exactement celui dont vous avez besoin, selon à la base de données.

1
everton

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

J'ai résolu comme ça

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

Après cela, j'ai utilisé le setDate normalement, et j'ai utilisé un getTimestamp pour récupérer la première valeur.

où start est un objet Date.

1
Cristiano Fontes