addition de dates

addition de dates - Java - Programmation

Marsh Posté le 13-04-2004 à 10:05:09    

Je cherche à additionner une heure à une date. Mon problème est que cette heure et cette date sont au format String car je dois les insérer dans une requete SQL grâce à une requete du style  
 
query="insert into BASEQ.TEST_EXECUTION  (BASEQ.TEST_EXECUTION.EXE_DATE) values  (TO_DATE('" + startTime + "' , 'MM/DD/YYYY HH24:MI')";  
 
avec startTime ma date à laquelle je dois ajouter une chaine contenant une heure.
 
Je ne sais pas comment faire pour additionner ces 2 formats différents de date      

Reply

Marsh Posté le 13-04-2004 à 10:05:09   

Reply

Marsh Posté le 13-04-2004 à 10:37:15    

java.util.Calendar


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 10:47:17    

C'est ce que je suis entrain d'essayer d'utiliser mais j'ai quelques problème pour ensuite intégrer la nouvelle date calculée dans ma requete

Reply

Marsh Posté le 13-04-2004 à 10:48:41    

PreparedStatement [:mlc]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 10:51:18    

J'avais commencé à utiliser PreparedStatement mais j'avais trop d'erreur. Du coup j'ai entrer mes dates en format Sting, en faisant un To_DATE dans ma requete. Mais en additionnant mes dates, j'obtiens en fin de traitement un calendar et non plus un String. Il faut donc que j'arrive à retransformer  ce Calendar en string

Reply

Marsh Posté le 13-04-2004 à 10:56:39    

lapartdombre a écrit :

J'avais commencé à utiliser PreparedStatement mais j'avais trop d'erreur. Du coup j'ai entrer mes dates en format Sting, en faisant un To_DATE dans ma requete.  


http://www.eklyptic.org/eyemage/images/stars/sting.jpg
 
je te conseille de reprendre le PreparedStatement et de corriger les erreurs que tu avais.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-04-2004 à 10:59:26    

Super photo !!!!!
 
Une petite question avec le preparesStatement comment tu fais pour affecter ta date à la variable. Est ce que setDate fonctionne?
Je ne pense pas car il prend en paramètre setDate(int, java.sql.Date) et non un GregorianCalendar ou un Calendar
statement.setDate(1,calendar);

Reply

Marsh Posté le 13-04-2004 à 11:06:32    

totoz

Reply

Marsh Posté le 13-04-2004 à 11:06:48    

??????????

Reply

Marsh Posté le 13-04-2004 à 11:22:29    

sur un calendar tu peux faire un getTime() pour récupérer l'équivalent sous forme de Date


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-04-2004 à 11:22:29   

Reply

Marsh Posté le 13-04-2004 à 11:49:20    

J'ai un message d'erreur "null" et je ne comprend pas d'ou vient le probleme.
Voici une partie de mon code :
 
query="insert into BASEQ.TEST_EXECUTION  (BASEQ.TEST_EXECUTION.EXE_DATE) values  (? ))";    
PreparedStatement statement = connection.prepareStatement(query);
statement.setDate(1,(java.sql.Date) calendar.getTime());

Reply

Marsh Posté le 13-04-2004 à 13:38:02    

[:totoz]
 
getTime() te renvoie un java.util.Date (cf moinsmoins, quel nom de methode mal choisi :o)
on ne caste pas un java.util.Date en java.sql.Date, ca n'a aucun sens.
 
java.util.Date a une methode getTime() qui te renvoie un long
java.sql.Date a un constructeur qui prend un long.
je te laisse donc deviner comment faire passer le Calendar en Date.


Message édité par lorill le 13-04-2004 à 13:46:02
Reply

Marsh Posté le 13-04-2004 à 13:40:23    

getTime de Calendar renvoie un Date... java.util.Date :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 13:44:58    

the real moins moins a écrit :

getTime de Calendar renvoie un Date... java.util.Date :D

oups

Reply

Marsh Posté le 13-04-2004 à 14:17:49    

Désolé mais la je crois que je suis un peu perdue entre les java.sql.Date, java.util.Date et les calendar???  COmment je peux faire pour passer mon calendar en param.

Reply

Marsh Posté le 13-04-2004 à 14:39:07    

fais un effort ! avec la javadoc et ce qui t'as été dis tu as tout ce qui faut ... faut mettre un peu du tiens, hein !
 
new java.sql.Date(tonCalendar.getTime().getTime())


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-04-2004 à 14:42:18    

benou :pfff:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 14:47:20    

je veux bien faire un effort mais en plus de la date j'ai besoin de récupérer l'heure et avec cette méthode je n'ai plus l'heure

Reply

Marsh Posté le 13-04-2004 à 14:51:55    

http://forum.hardware.fr/icones/flagn1.gif

Reply

Marsh Posté le 13-04-2004 à 17:25:46    


[:skeye]

lapartdombre a écrit :

je veux bien faire un effort mais en plus de la date j'ai besoin de récupérer l'heure et avec cette méthode je n'ai plus l'heure


dans ce cas c'est pas Date que tu dois utiliser mais TimeStamp. ca fonctionne à peu près pareil ... je te laisse regarder la javadoc.


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-04-2004 à 17:27:54    

benou a écrit :


[:skeye]
 
dans ce cas c'est pas Date que tu dois utiliser mais TimeStamp. ca fonctionne à peu près pareil ... je te laisse regarder la javadoc.

:heink: qu'est-ce que tu racontes toi.
le probleme est probablement du coté de sa base: un objet date est précis à la ms [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-04-2004 à 17:32:59    

the real moins moins a écrit :

:heink: qu'est-ce que tu racontes toi.
le probleme est probablement du coté de sa base: un objet date est précis à la ms [:spamafote]


bha non : (javadoc de java.sql.Date)

Citation :

To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.


Pour ca y a Time et TimeStamp (qui ajoute les nanoseconde). Il me semble que c'est ce dernier qui est le plus utilisé.


Message édité par benou le 13-04-2004 à 17:33:19

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 13-04-2004 à 17:35:53    

ha ouais tiens [:core 666]  
va pour Timestamp alors [:spamafote]
 
(pouvaient pas faire prendre un util.Date a la methode setDate nan?[:kiki])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 11:48:30    

Je comprend pas (et pourtant j'essaye) pourquoi y'en a qui s'evertue à faire du SQL alors qu'avec des outils de mapping objet/relationnel comme Hibernate ce genre de problème s'évanouie.

Reply

Marsh Posté le 15-04-2004 à 11:50:31    

- parce qu'ils sont à l'école
- parce qu'ils s'en battent les couilles et font ce que le chef à dit. chef qui, en bon chef qui se respecte, ne connait plus à rien depuis 15 ans


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 12:50:40    

je vois pas le problème de faire du SQL : ca va certainement plus vite à mettre en place dans le cadre de petits projets


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 12:51:17    

benou a écrit :

je vois pas le problème de faire du SQL : ca va certainement plus vite à mettre en place dans le cadre de petits projets

quand on ne sait pas de quoi on parle, peut etre.
en clair, t'as tord.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 12:57:48    

benou a écrit :

je vois pas le problème de faire du SQL : ca va certainement plus vite à mettre en place dans le cadre de petits projets


 
Pour chez toi ça va
 
mais  
 
petit projet devriendra grand.
 
Sans compter que les éditeurs de SGBDR ont tous ajouter leur subtilités au SQL qui aurait du rester universel.
 
Avec des outils de mapping Objet/Relationnel la prise en compte d'un SGBD particulier se limite à de la configuration.


Message édité par pascal34 le 15-04-2004 à 13:00:16
Reply

Marsh Posté le 15-04-2004 à 15:52:53    

the real moins moins a écrit :

quand on ne sait pas de quoi on parle, peut etre.
en clair, t'as tord.


peut être ...
je connais pas hibernate, mais j'imagine que le temps de formation à l'outils doit pas être négligeable ...
 
et j'ai tendance à me méfier de ce genre d'outils sur les petits projets ...  
 
Genre si t'as 2 tables en base, je vois pas l'intérêt de passer par ce genre de trucs quoi ... si ce n'est opur des raisons politiques de la boite (qui m'oblige d'ailleur à utiliser un truc équivalent ici)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 15:53:37    

pascal34 a écrit :


petit projet devriendra grand.


et tant va la cruche à l'eau qu'à la fin elle se casse [:kiki]


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 16:22:10    

benou a écrit :


peut être ...
je connais pas hibernate, mais j'imagine que le temps de formation à l'outils doit pas être négligeable ...
 
et j'ai tendance à me méfier de ce genre d'outils sur les petits projets ...  
 
Genre si t'as 2 tables en base, je vois pas l'intérêt de passer par ce genre de trucs quoi ... si ce n'est opur des raisons politiques de la boite (qui m'oblige d'ailleur à utiliser un truc équivalent ici)

le temps de formation, c'est une fois pour toute, et c'est vraiment super rapide à demarrer. va voir la doc, en 5 minutes, pour 2 objets t'es parti.
et puis tu peux faire de l'objet, et t'arretes de te faire chier avec l'antiquité du sql quoi [:kiki]
t'es gagnant à tout point de vue.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 16:34:59    

benou a écrit :


et tant va la cruche à l'eau qu'à la fin elle se casse [:kiki]


 
et puis d'abord le chien aboie et la caravane passe  :lol:  
 
Plus sérieusement, même pour deux tables j'irai pas m'emmerder à faire du SQL ne serait-ce que pour la compatibilité avec les SGBD.
 
Maintenant, si ton SGBD est fixe et que tu as deux ridicules transactions à faire, pourquoi pas si t'es un pro du SQL.

Reply

Marsh Posté le 15-04-2004 à 17:05:35    

the real moins moins a écrit :

le temps de formation, c'est une fois pour toute, et c'est vraiment super rapide à demarrer. va voir la doc, en 5 minutes, pour 2 objets t'es parti.
et puis tu peux faire de l'objet, et t'arretes de te faire chier avec l'antiquité du sql quoi [:kiki]
t'es gagnant à tout point de vue.


et ca gère même des requêtes un peu plus compliqué que de bêtes select insert update ? genre des "select ... where id in(...)", des trucs comme ca ?


Message édité par benou le 15-04-2004 à 17:05:58

---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 17:31:59    

benou a écrit :


et ca gère même des requêtes un peu plus compliqué que de bêtes select insert update ? genre des "select ... where id in(...)", des trucs comme ca ?


 
En gros le mapping c'est une table = une classe et une colonne = un atrribut de la classe avec les get/set
Ca se fait dans des fichier xml de conf
 
En plus fin tu décris les contaraintes entre les tables avec des relations one-to-one, one-to-many, many-to-one, many-to-many. Dans le dernier cas tu donne en plus le nom de la table d'indexation et il gère le reste.
 
Les contraintes sont exprimées dans le code sous la forme de méthodes qui renvoient des List ou des Set suivant la contrainte (one-to-one ne correspond pas à une liste !!!). Si tu le souhaites, tu peux spécifier que tu veux les liens inverses.
 
Tu peux toi-même gérer les clés primaires (simples ou composées) ou bien laisser le soin à Hibernate de le faire. Dans ce cas il choisira la meilleur méthode en fonction du SGBD cible.
 
Ex : Une Commande est associée à un seul Client mais un client peut passer plusieurs Commandes -> Sur la classe Commande tu as un attribut de type Client avec ses get/set et tu pourra avoir la classe Client une méthode getCommandes() qui te renvoi un objet List contenant toutes les commandes du client.
 
Si tu veux ajouter une Commande à un client tu fera qqch comme ça :
 

Code :
  1. Client monClient = new Client();
  2. Commande maCommande = new Commande();
  3. /*
  4. travailler avec la commande
  5. */
  6. monClient.setId(...);//un numéro client par exemple obtenu en chargeant les objets clients et après sélection dans une liste.
  7. monClient.load();
  8. monClient.getCommandes().add(maCommande);
  9. monClient.save();


 
Tout l'aspect connection à la base est géré par hibernate.
Tu peux ou non faire des tansactions.
 
Et surtout le plus cool, si tu changes de SGBD en cours de route t'as pas à te retaper toutes tes requêtes pour voir si elles sont acceptées par le nouveau SGBD.
 
C'est mieux de bosser comme ça


Message édité par pascal34 le 15-04-2004 à 17:35:17
Reply

Marsh Posté le 15-04-2004 à 17:37:00    

ouais, ben c'est un truc classique quoi ... sauf  que tu dois avoir un max de fichiers de config derrière, des sources à générer, etc ... c'est l'équivalent du truc qu'on a ici, et je persiste à dire que pour des besoin simple ca va plus vite de faire ca en SQL.
 
Mais il est évident que c'est l'outil à utiliser pour des projets de taille moyenne ou importante


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 17:46:36    

benou a écrit :


et ca gère même des requêtes un peu plus compliqué que de bêtes select insert update ? genre des "select ... where id in(...)", des trucs comme ca ?

un bete IN (3,4,5) ??? bah y'a interet [:mlc]
 
si ça t'amuse tu peux meme cracher du sql direct dedans.
 
seulement des crasses style requetes imbriquées etc les 3/4 du temps pour moi c'est signe d'un design louche :o
 
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 17:47:49    

benou a écrit :

ouais, ben c'est un truc classique quoi ... sauf  que tu dois avoir un max de fichiers de config derrière, des sources à générer, etc ... c'est l'équivalent du truc qu'on a ici, et je persiste à dire que pour des besoin simple ca va plus vite de faire ca en SQL.
 
Mais il est évident que c'est l'outil à utiliser pour des projets de taille moyenne ou importante

ZERO sources à generer, et tu peux generer TOUS les fichiers de conf à partir de ton code source. et ton code source c'est DES BETES JAVABEANS.
 
PUTAIN TU VA LA LIRE L'INTRODUCTION EN 5 MINUTES OU MERDE!! (au lieu de ramener tes arguments préhistoriques à la con là)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 15-04-2004 à 18:12:30    

[:yo]

Reply

Marsh Posté le 15-04-2004 à 18:37:56    

the real moins moins a écrit :

PUTAIN TU VA LA LIRE L'INTRODUCTION EN 5 MINUTES OU MERDE!! (au lieu de ramener tes arguments préhistoriques à la con là)


j'irai voir, oui.
 
et mes arguments à la con il t'emmerdent :o


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 15-04-2004 à 22:12:46    

j'ai lu ...
 
mouais, bof, a tester. Je suis pas super emballé : y a rien de révolutionnaire. La config a l'air assez simple (c'est un bon point) mais c'est assez troublant de HQL ...  C'est pas trop chiant à la longue ?
 
faudrait que je teste ca dans un vrai projet pour bien me rendre compte ...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed