Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2011, 14h47   #1
Invité de passage
 
ya tian
Inscription : novembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : ya tian

Informations forums :
Inscription : novembre 2010
Messages : 8
Points : 2
Points : 2
Par défaut Problème de Date

Bonjour a toutes et tous

J'ai rencontré un problème très bizarre en utilisant l'Oracle et Java

Je m'explique:

Je programme en Java, et me connecte sur une BD oracle par un JDBC

Citation:
Connection conBD = null;

Class.forName("oracle.jdbc.driver.OracleDriver");

String chaine = "jdbc:oracle:thin:@"+IPBD+":"+PortBD+":"+SIDBD;
conBD = DriverManager.getConnection(chaine,UserBD,PasswordBD);
Puis quand je fais

Citation:
PreparedStatement ps = conBD.prepareStatement("select * from FACTURE where NUMFACTUREINTERNE = ?");
ps.setString(1, NumFacture);
ResultSet rs = ps.executeQuery();

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
System.out.println("date facture" + sdf.format(f.getDateFacture())
+"date ms : " + rs.getDate(3).getTime()
+ "date du jour ms : " + (new Date()).getTime());
J'obtiens comme resulttat :
Citation:
date facture 11/05/0011
date ms : -61809008400000
date du jour ms 1305376229407
Date : 11/05/0011
PS: dans la BD, la date est 11/05/2011, mais dans mon application, la date obtenu est 0011 -.-

Est-ce qu'il y a quelqu'un pourrait m'aider? SVP

Merci d'avance
z1988 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 16h59   #2
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Peut être un problème d'affichage de la date, oracle afficherait la date sur 2 digits pour l'année alors que java en attend 4 et il comblerait par 00 (c'est juste une supposition je ne connais pas java même si en tant qu'utilisateur j'ai déjà vu ce genre de date issue d'une appli java...)
Que donne depuis le programme java :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SQL> SELECT * FROM nls_session_parameters WHERE parameter='NLS_DATE_FORMAT';
 
PARAMETER                      VALUE
------------------------------ ----------------------------------------
NLS_DATE_FORMAT                DD-MON-RR
 
Elapsed: 00:00:00.01
SQL> SELECT sysdate FROM dual;
 
SYSDATE
---------
14-MAY-11
 
Elapsed: 00:00:00.01
SQL>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> ALTER session SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
 
Session altered.
 
Elapsed: 00:00:00.00
SQL> SELECT sysdate FROM dual;
 
SYSDATE
-------------------
14/05/2011 17:02:12
 
Elapsed: 00:00:00.00
SQL>
De toute façon select * n'est pas une bonne manière de coder, il faut sélectionner les colonnes explicitement et tu pourras en profiter pour formater l'affichage de la date à ta convenance en utilisant to_char :
Code :
1
2
3
4
5
6
7
8
SQL> SELECT to_char(sysdate,'DD/MM/YYYY') FROM dual;
 
TO_CHAR(SY
----------
14/05/2011
 
Elapsed: 00:00:00.01
SQL>
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 19h07   #3
Invité de passage
 
ya tian
Inscription : novembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : ya tian

Informations forums :
Inscription : novembre 2010
Messages : 8
Points : 2
Points : 2
avant de poster, j'avais déja fait dans l'oracle
Citation:
SELECT * FROM nls_session_parameters WHERE parameter='NLS_DATE_FORMAT';
pour etre sur que j'ai bien 2011

Mais merci quand meme pour ta réponse
z1988 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 21h15   #4
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Oui mais tu l'avais fait depuis le programme java ou depuis toad,sqldeveloper ou sqlplus, le client est important puisque c'est un parametre de session.
Si c'était depuis le programme java, précise le driver utilisé au cas où quelqu'un ait rencontré le même problème, mais à mon avis tu auras plus de chance sur un forum java...
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2011, 23h43   #5
Invité de passage
 
ya tian
Inscription : novembre 2010
Messages : 8
Détails du profil
Informations personnelles :
Nom : ya tian

Informations forums :
Inscription : novembre 2010
Messages : 8
Points : 2
Points : 2
Oui, t'avais raison, c'est le problème de coté Java

J'avais juste supprimer la librairie JDBC et le recharger, et ca fonctionne correct d'un coup

Merci pour tes réponses
z1988 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web