IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Insertion timestamp [date+time]


Sujet :

PostgreSQL

  1. #1
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Calendar c= Calendar.getInstance();
    Timestamp t3= new Timestamp(c.getTimeInMillis());
    messageVO.getMessage().setDateCreated(t3);
    ou même:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    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
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    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?

  4. #4
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    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
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  5. #5
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    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.

  6. #6
    Membre Expert Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    query := 'insert into ma_table (ma_colonne) values (''2000-12-16 12:21:13'');'
    Ensuite tu exécutes le statement "query"
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  7. #7
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  8. #8
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Par défaut
    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.

  9. #9
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    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

Discussions similaires

  1. Meilleur Methode insert Date/time postgres - C#
    Par deco76 dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/07/2013, 15h25
  2. SQL Insert into with a date time picker
    Par blacklolou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 27/12/2012, 13h01
  3. Différence entre Date Time et Timestamp
    Par menzlitsh dans le forum Langage
    Réponses: 1
    Dernier message: 28/04/2009, 14h32
  4. Insertion de date timestamp
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/01/2007, 08h40
  5. Insert Into + Date
    Par BoeufBrocoli dans le forum SQL
    Réponses: 10
    Dernier message: 13/08/2003, 11h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo