Récupération d'une date dans une base de données Oracle 9i

albancadiot
Messages postés
8
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
9 mai 2006
- 5 avril 2006 à 17:34
aieeeuuuuu
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
- 11 avril 2006 à 17:12
Bonjour,

j'ai un problème pour quelques chose qui me semble tout bête.

Je doit récupérer des dates dans une table Oracle 9i . J'utilise eclipse et java pour développé mon application. puis ojdbc14.jar

ma requête est:
SELECT START_TIME FROM CALL_QR WHERE START_TIME='2006-02-22 07:15:56.0';

Je vous montre un exemple avec la date au format tel qu'Oracle me la renvoie quand je fait un select * sur la base.Mais dès que je spécifiie une date particulière, j'ai un message d'erreur.
J'ai également essayé de convertir ma date en milliseconde, pensant peut être qu'Oracle stockait les données différamment qu'a l'affichage.sans succès.

J'ai essayé de stocker ma date dans un Timestamp et de le passer à la requête,sans succès également.

Le champ dans la base Oracle est du type Date.

Je désespère.

7 réponses

Mindiell
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
6 avril 2006 à 00:58
Peux-tu mieux expliquer ?

La date renvoyée par Oracle est : '2006-02-22 07:12:56.0' ?
Celle que tu utilises toi est : '2006-02-22 07:12:56.0' ?

Si ca marche comme ca, pourquoi vouloir en changer ?
0
albancadiot
Messages postés
8
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
9 mai 2006

6 avril 2006 à 09:18
oui, à partir du résultat que m'a renvoyé la requête:
SELECT START_TIME FROM CALL_QR ;, j'ai fait un copier coller d'un des résultat dont j'était sûr qu'il était dans la base de données, puis ensuite j'ai adapté ma requête pour obtenir SELECT START_TIME FROM CALL_QR WHERE START_TIME='2006-02-22 07:15:56.0'; mais là, j'ai une errreur de la part d'oracle:
java.sql.SQLException: ORA-00933: SQL command not properly ended
cette erreur survient dans le cas ou j'utilise un timestamp, mais également par concaténation
"SELECT START_TIME FROM CALL_QR where START_TIME="+obj+" AND ROWNUM <= 10" ;
0
Mindiell
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
6 avril 2006 à 10:56
c'est java qui semble merdoyer, peux-tu mettre les quelques lignes de ton code qui créent la requete et qui l'envoie ?
0
albancadiot
Messages postés
8
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
9 mai 2006

6 avril 2006 à 12:21
voici le code que j'utilise.



import java.sql.*;
import java.util.*;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.ResultSet;

String url="jdbc:oracle:thin:@xxx.xx.xx.xx:1521:xxxx";

String userId="xxx";
String password="xxxx";

System.getProperties().put( "proxySet", "true" );
System.getProperties().put( "proxyHost", "xxxx" );
System.getProperties().put( "proxyPort", "3128" );

String requete=null;
Connection con =null;


String date_heure="05/04/2006 08:57:00";



try {
Class.forName("oracle.jdbc.driver.OracleDriver");
}
catch(ClassNotFoundException e) {
System.err.println(" Erreur de chargement du driver :" + e) ;
}

try {
con = DriverManager.getConnection(url,userId,password) ;

voici les différentes requete que j'ai essayé

requete="SELECT START_TIME FROM CALL_QR where START_TIME="+date_heure+" AND ROWNUM <= 10" ;
requete="SELECT START_TIME FROM CALL_QR where START_TIME='"+date_heure+"' AND ROWNUM <= 10" ;
requete="SELECT START_TIME FROM CALL_QR where START_TIME='"+obj+"' AND ROWNUM <= 10" ;//obj est un objet timestamp
requete="SELECT START_TIME FROM CALL_QR where START_TIME='"+obj.getTime()+"' AND ROWNUM <= 10" ;//obj est un objet timestamp

//2006-02-28 15:36:08.0
PreparedStatement prep = con.prepareStatement(requete);

ResultSet resultat = prep.executeQuery();
int i=0;


while (resultat.next()) {
i++;

//String DEST_IP=resultat.getString("START_TIME ");
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mindiell
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
6 avril 2006 à 12:39
Alors, ta variable contient : "05/04/2006" il faudrait plutot "2006-04-05"
quand tu fais la demande, mets la valeur entre '' (apostrophes)

requete = "SELECT START_TIME FROM CALL_QR where START_TIME<='" + date_heure + "'";

- J'ai viré le rownum, pas besoin pour le moment
- J'ai mis <au lieu de, la simple raison c'est que si ta date est codée au dixième de secondes près, le '05/04/2006 08:57:00' (et 0 dxièmes donc) n'existe peut-être pas :o)

A voir avec ca si ca te retourne des réponses...
0
albancadiot
Messages postés
8
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
9 mai 2006

6 avril 2006 à 13:55
voici ce que j'obtient comme erreur sur ma requête alors que plus bas, quand je fait un select sans précisé une date précise, j'obtient les dix résultats demandé, dailleur j'ai pris un des dix résultats et le l'ai demandé dans ma requête, et la, erreur. j'ai essayé avec concaténation de string et avec un timestamp. Mystère?


Erreur sur une requête :SELECT START_TIME FROM CALL_QR where START_TIME<='2006-03-31 12:30:00.0'
java.sql.SQLException: ORA-01861: literal does not match format string

quand je fait
requete="SELECT START_TIME FROM CALL_QR where ROWNUM <= 10" ;
j'obtient bien des dates pourtant.
2006-03-03 13:20:00.0
2006-03-31 12:00:00.0
2006-03-31 12:30:00.0
2006-03-31 13:00:00.0
2006-03-31 13:30:00.0
2006-03-31 14:00:00.0
2006-03-31 14:30:00.0
2006-03-31 15:00:00.0
2006-03-31 11:30:00.0
2006-03-28 21:23:00.0
2006-03-28 21:26:00.0
6 avr. 2006 13:48:55 org.apache.catalina.core.StandardContext reload
INFO: Le rechargement de ce contexte a démarré
0
aieeeuuuuu
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
11 avril 2006 à 17:12
salut

pourquoi n'utilise tu pas la fonction oracle TO_DATE pour etre sur que ta date est correctement formatée ?
0