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

MS SQL Server Discussion :

[SQL2K] Problème pour convertir un timestamp en datetime !!


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut [SQL2K] Problème pour convertir un timestamp en datetime !!
    Bonjour tout le monde

    Je suis actuellement en contrat d apprentissage dans une boite, et je dois migrer une base de données mysql vers sql server 2000.

    J ai un soucis avec les timestamp, comment peut on les convertir avec une requete SQL, je chercher mais je trouve pas de solution a mon probleme

    quelqu un pourait il m aider ?


    Merci et à bientot

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Points : 185
    Points
    185
    Par défaut
    Le problème, c'est que d'après ce qu'on peut lire ici ou ici, timestamp ne stocke absolument pas des dates, mais sert plutot de compteur.
    Je ne pense donc pas qu'on puisse convertir un timestamp en datetime...
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    arf, si je comprends bien je vais devoir creer un script moi meme

    Tu aurais des idees pour creer ce script ?

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Points : 185
    Points
    185
    Par défaut
    Désolé, absolument aucune idée !

    Mais je ne suis même pas sur qu'un tel script soit réalisable. D'après ce que j'ai compris, un champs de type timestamp ne correspond absolument pas à une date. C'est plutôt une sorte de compteur qui s'incrémente à chaque insertion/modification de ligne... Donc je ne vois pas comment on pourrait trouver une correspondance avec une date ! :/

    Edit : Arf, désolé, j'avais mal lu ton 1er message ! En fait c'est un timestamp MySQL que tu veux convertir en Datetime SQL Server ? Dans ce sens là, ça devrait être possible au vu de ce qui est décrit ici.
    Par contre il faudrait que tu nous donnes ta version de MySQL. Car apparemment le type timestamp des versions antérieures à la 5 possède des propriétés différentes de celui des versions les + récentes.
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    oui oui c est bien un timestamp de type date

    alors pour la version de mysql , c est "MySQL 4.1.9-max"

    en fait, je dois effectuer la conversion à partir de sql server, donc si des fonctions sql server existé ca serait bien, si non je vais devoir creer un trigger pr modifier mes dates et ça va etre galere.

    edit, le timestamp que j utilise et le timestamp normal, le nombre de second depuis le 01-01-1970





    D'apres ce qui est dit sur le site de microsoft, le timestamp est un "binary(8)", et d'apres l'image il y a une conversion implicite entre le binary et le datetime, mais comment faire ?

  6. #6
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 142
    Points : 185
    Points
    185
    Par défaut
    Ah oki ! Si c'est bien le nombre de sec depuis le 01-01-1970, alors c'est faisable et même très facile
    Tu peux t'inspirer de ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO new_table(date_field) SELECT DATEADD(s, timestamp_field, '19700101') FROM old_table
    edit : en fait tu peux oublier ce qu'il y a écrit sur le site de MS, car le type timestamp de SQL Server n'a rien à voir avec celui de MySQL. C'est simplement un type binaire qui fait office de compteur, rien à voir avec des dates.
    "Le problème du monde, c'est que les imbéciles sont présomptueux et les gens intelligents bourrés de doutes" B. Russell

  7. #7
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    Je me renseigne sur DATEADD, et je vous tiens au courant

  8. #8
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    Je ne vois absolument pas comment ça marche
    Quelqu 'un pourait il m aider svp

  9. #9
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 172
    Points : 72
    Points
    72
    Par défaut
    je viens de re-essayer et effectivement ça marche

    je sais pas ce que j ai fait hier mais ca marchait pas



    Merci bien

    Par contre, petit probleme, qd je convertis le timestamp '1191189600' avec un script php, il me donne "01-10-2007 00:00"

    alors que avec le code ci-dessus il me sort "2007-09-30 22:00:00.000"

    pourquoi il oublie 2heures ? j ai fait plusieurs testes et il manque toujours des heures

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DATEADD(day, 1, DATEADD(s, 1191189600, '19700101')) AS newdate
    ca me donne :
    2007-10-01 22:00:00.000
    edit : Bon c est réglé j ai ajouter 1 jour

    Par contre maintenant je dois forcer les heures, minutes, seconde a 00:00:00. Comment faire ?

    Bon pour ceux que ça interesse j ai trouvé un manip:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CAST(FLOOR(CAST(DATEADD(day, 1, DATEADD(s, 1191888600, '19700101')) AS FLOAT)) AS DATETIME)
    Voila probleme resolu pour de bon, ouf
    Merci de ton aide Lawyer666

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

Discussions similaires

  1. Probléme pour convertir decimal en hexa
    Par vtk37 dans le forum Débuter
    Réponses: 7
    Dernier message: 19/05/2009, 14h00
  2. Problème pour convertir un nom d'utilisateur en SID
    Par VincentSc dans le forum Windows
    Réponses: 2
    Dernier message: 13/05/2009, 15h09
  3. Réponses: 26
    Dernier message: 03/11/2008, 16h29
  4. Réponses: 11
    Dernier message: 19/02/2007, 00h20
  5. [C#] Problème pour convertir .Color en .Brush
    Par pymouse dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/05/2005, 15h19

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