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

Langage Perl Discussion :

Comment obtenir un Timestamp db2


Sujet :

Langage Perl

  1. #1
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut Comment obtenir un Timestamp db2
    Bonjour,


    Je cherche une fonction ou méthode permettant de générer un timestamp au format DB2; c'est à dire au format : AAAA-MM-JJ HH:mm:ss.xxxxxx où les x représentent les microsecondes.

    Le problème que je rencontre c'est qu'en utilisant DateTime je n'obtiens pas les microsecondes nécessaires à la création du timestamp db2.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $date = DateTime->now;
    $timestamp  = $date->year;
    $timestamp .= '-'.$date->month;
    $timestamp .= '-'.$date->day;
    $timestamp .= ' '.$date->hour;
    $timestamp .= ':'.$date->minute;
    $timestamp .= ':'.$date->second;
    $timestamp .= '.'.$date->nanosecond;
     
    print "timetamp = [$timestamp]\n";
    (ps : j'ai retiré des sources les controles permettant de préfixer avec un 0 une valeur inférieure à 10.)

    Ce code me retourne :
    timetamp = [2009-10-21 18:10:03.0]
    alors que je souhaite avoir :
    timetamp = [2009-10-21 18:10:03.012345]

    Existe t il un moyen en perl d'obtenir ce genre de résultat ?

    Merci pour votre aide.

    Didier

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 211
    Points
    211
    Par défaut
    Il faut utiliser un module plus précis, genre:
    Time::HiRes::gettimeofday()

    cf http://search.cpan.org/~jhi/Time-HiRes-1.9719/HiRes.pm

  3. #3
    Membre du Club

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 43
    Points
    43
    Par défaut
    Merci à toi pour cette information.

    J'ai donc créé une fonction qui retourne une chaine de caractères au format timestamp db2.

    Je la laisse ici si ça peut aider d'autres personnes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    # ------------------------------------------------
    # Fonction getCurrentTimestamp
    #   -> qui retourne un current timestamp au foramt
    #      db2
    # ex : 2009-10-25 16:35:53.123456
    # ------------------------------------------------
    sub getCurrentTimestamp
    {
      my $epochseconds = "0";
      my $microseconds = "0";
      my $second = "0";
     
      ($epochseconds, $microseconds) = Time::HiRes::gettimeofday; 
      ($second, $minute, $hour, $jour, $mois, $annee) = localtime($epochseconds);
     
      $mois += 1 ; 
      $annee += 1900;
     
      return sprintf("%4d-%2d-%2d %02d:%02d:%02d.%06d", $annee, $mois, $jour, $hour, $minute, $second, $microseconds); 
    }
     
    # Tests.
    $t0 = getCurrentTimestamp();
    print "timestamp 0 = [$t0]\n";
     
    $t1 = getCurrentTimestamp();
    print "timestamp 1 = [$t1]\n";
    Ce qui m'affiche :
    timestamp 0 = [2009-10-22 17:24:08.434871]
    timestamp 1 = [2009-10-22 17:24:08.435185]

    Petite précision : je ne connais pas le perl, je découvre donc il y a peut être des erreurs de conception.

    Didier

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    si j'ai le temps, je le rajouterais dans nos sources après corrections si nécessaires .
    D'ailleurs, n'hésitez pas à faire des propositions ici.

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 156
    Points : 211
    Points
    211
    Par défaut
    Et pour confirmer la parole de Djibril, ton code est plutôt bien. :-)

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Ne pas oublier à mettre le post en résolu. Pour information : Comment obtenir la date au format DB2, obtenir la microseconde ? avec un nouveau auteur didleur.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 31/05/2011, 19h18
  2. comment obtenir un polynome de regression
    Par evariste_galois dans le forum Mathématiques
    Réponses: 17
    Dernier message: 19/01/2007, 15h06
  3. Réponses: 5
    Dernier message: 18/01/2004, 16h25
  4. Comment obtenir l'heure du serveur avec flash ?
    Par Michaël dans le forum Flash
    Réponses: 9
    Dernier message: 23/12/2003, 17h50
  5. Comment obtenir la liste des paramètres d'une SP ?
    Par Le Gritche dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/03/2003, 16h54

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