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

DB2 Discussion :

convertir un timestamp en un bigint


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut convertir un timestamp en un bigint
    Bonjour,

    Je suis entrain de migrer une table qui contient une date au format timestamp vers une table qui contient cette date au format bigint.
    Il faut donc que j'arrive à récupérer ma date comme un timestamp, c'est à dire le nombre de secondes depuis 1970 (je crois).
    Seulement à chaque fois ma date est interprétée et je la retrouve en format YYYY-MM-DD...

    Merci de votre aide

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Citation Envoyé par dams78 Voir le message
    ...Il faut donc que j'arrive à récupérer ma date comme un timestamp, c'est à dire le nombre de secondes depuis 1970 (je crois).
    euhh, celà me parait contradictoire.
    Veux-tu transformer :
    - une date en timestamp ?
    - Transformer un timestamp en bigint depuis 1970-01-01 ?

    tu peux utiliser la builtin fonction TIMESTAMP ou TIMESTAMPDIFF

  3. #3
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    si je prends un exemple, je veux transformer ça :
    2008-05-22-11.20.03.315315810
    en un bigint qui est interprété comme un timestamp, par contre ce fameux bigint est codé sur 19 caractères et dans les exemples que j'ai il contient 13 caractères

    j'ai réussit avec cette commande à afficher le nombre de secondes depuis 1970 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select CAST (DAYS(current timestamp) - DAYS('1970-01-01') AS INTEGER) * 86400 + MIDNIGHT_SECONDS(current timestamp) from sysibm.sysdummy1;
    mais cela ne me retourne que 10 caractères, je suppose donc que les trois caractères c'est pour arriver aux millisecondes

    --edit

    en multipliant plutôt par 86400000 et en castant avec un BIGINT j'obtiens un peu plus ce que je veux, je vais tester maintenant sur la date du jour histoire de m'assurer de la cohérence des données

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select DEC(                                              
    TIMESTAMPDIFF( 2, cast(                                     
    current_timestamp - timestamp('1970-01-01-00.00.00.000000') 
    as char(22))), 13, 0) NbrSecondes                                              
    from sysibm/sysdummy1
    Le 2 représente les secondes dans TIMESTAMPDIFF :
    1 Fractions of a second
    2 Seconds
    4 Minutes
    8 Hours
    16 Days
    32 Weeks
    64 Months
    128 Quarters
    256 Years

  5. #5
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    et faire le contraire histoire de tester que le timestamp est correct c'est possible?

    --edit
    oui avec la requête suivante :
    SELECT (timestamp('1970-01-01-00.00.00.00000') + (1254917749000 / 86400000) days)FROM sysibm.sysdummy1

    le problème c'est que je perds complètement l'heure de la date...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    821
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2008
    Messages : 821
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT (timestamp('1970-01-01-00.00.00.00000') + 
    1254917749000 seconds FROM sysibm.sysdummy1

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

Discussions similaires

  1. convertir le timestamp dans une requêtesql.
    Par Ohemeg dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/10/2009, 00h33
  2. convertir un timestamp vers un décimal ?
    Par clavier12AZQSWX dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 08/09/2009, 18h15
  3. [SQL2K] Problème pour convertir un timestamp en datetime !!
    Par MeHo_ dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 04/03/2008, 11h02
  4. Comment convertir un timestamp négatif en date ?
    Par Sergejack dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/11/2007, 17h02
  5. [8.5] convertir un timestamp
    Par rissorg dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 22/05/2007, 13h43

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