Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
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 24/01/2008, 18h46   #1
Invité de passage
 
Inscription : novembre 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 21
Points : 4
Points : 4
Par défaut Insertion timestamp [date+time]

Salut les membres

j'ai besoin de renseigner la date+time de la création d'une entité.
Le problème est que j'arrive pas à insérer le Time: j'ai toujous la date seulement malgré que le type dans ma base est belle et bien timestamp (24/01/2008 au lieu de 2008-01-24 18:02:02.209)
Dans mon code JAVA j'ai essayer avec le type Timestamp et Date(java.util, java.sql...) sans réussite:
Code :
1
2
3
Calendar c= Calendar.getInstance();
Timestamp t3= new Timestamp(c.getTimeInMillis());
messageVO.getMessage().setDateCreated(t3);
ou même:
Code :
1
2
3
4
5
6
 
Date myDate= new Date();
Timestamp t1= new Timestamp(myDate.getYear(),myDate.getMonth(),myDate.getDay(),myDate.getHours(),myDate.getMinutes(), myDate.getSeconds(),myDate.getSeconds());
Timestamp t2= new Timestamp(1,2,24,16,1,1,1);
//messageVO.getMessage().setDateCreated(myDate);
messageVO.getMessage().setDateCreated(t2);
une idée?
Merci d'avance
badi082 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 09h12   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
C'est un problème de fonction java et pas un problème de Postgresql, tu devrais essayer de poser ton problème sur le forum java
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h17   #3
Invité de passage
 
Inscription : novembre 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 21
Points : 4
Points : 4
bonjour scheu,

je ne pense pas que ça soit unproblème de fonction Java puisque ma requete SQL est bien formée (dateCreated='2008-01-25 09:57:15.081').
je me trompe?
badi082 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2008, 10h53   #4
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
Tu veux insérer un timestamp dans ta base ou l'extraire de ta base au juste ? (désolé je suis pas spécialiste java)
Si dans ta base le type est bien timestamp, c'est côté java qu'il faut trouver le moyen ou la bonne fonction pour extraire les heures/minutes/secondes
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/01/2008, 13h55   #5
Invité de passage
 
Inscription : novembre 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 21
Points : 4
Points : 4
Salut,
je rémercie votre intéressement Scheu.
En faite je veux insérer date+time dans mon champs Timetamp de ma base posstgres.
le code indiqué dans mON prémier post renseigne sur la façon que j'ai suivi dans mon programme JAVA.
badi082 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 09h24   #6
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 483
Points : 1 483
Je ne sais pas si le timestamp java marche pour insérer un timestamp sous
postgresql
Au pire tu peux construire une variable string avec la valeur que tu veux insérer, du type
Code :
query := 'insert into ma_table (ma_colonne) values (''2000-12-16 12:21:13'');'
Ensuite tu exécutes le statement "query"
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2008, 16h59   #7
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Bonjour,

à moins d'avoir une raison impérieuse de faire autrement, il vaut mieux que cet horodatage se fasse côté base plutôt que côté client. Cela évite les problèmes liés aux horloges non synchronisées entre elles, et cela allège tes requêtes.

Pour cela, il suffit de définir une valeur par défaut pour ton champ :

Code :
1
2
3
4
5
CREATE TABLE my_table {
...
my_field timestamp NOT NULL DEFAULT now(),
...
}
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 09h52   #8
Invité de passage
 
Inscription : novembre 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 21
Points : 4
Points : 4
Bonjour GrandFather

j'ai pensé à cette solution mais ça ne marche pas:
j'ai remplie mon objet JAVA en aissant mon variable 'DateCreation' vide en pensant qui'elle sera remplie au niveau basse de données par la commande now(). dans le cas reél la valeur now() est ecrasé par la valeur de mon variable 'DateCreation' qui correspond à NULL. donc cette solution marche seulement dans le cas de l'ajout manuel dan la base de donnés.

PS: desolé pour le retard de post.
badi082 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/01/2008, 10h12   #9
Expert Confirmé Sénior
 
Avatar de GrandFather
 
Inscription : mai 2004
Messages : 4 490
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : mai 2004
Messages : 4 490
Points : 5 049
Points : 5 049
Citation:
Envoyé par badi082 Voir le message
j'ai pensé à cette solution mais ça ne marche pas:
Passe ton champ 'DateCreation' en lecture seule dans ton objet et ça fonctionnera.

Il n'est pas sûr, comme dit scheu, que le driver JDBC PostgreSQL considère comme équivalents les timestamps Java & Postgres ; tu devrais passer par un format chaîne comme il le suggère, qui sera correctement "casté" par Postgres.
__________________
FAQ XML
------------
« Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
Giacomo Leopardi
GrandFather est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h08.


 
 
 
 
Partenaires

Hébergement Web