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

Développement SQL Server Discussion :

Conversion binary(4) to datetime


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Par défaut Conversion binary(4) to datetime
    salut tous le monde

    j'ai une base de données SQL SERVER et dans une table y a un champ (dateRec) de type binary(4) que je veux convertir en datetime mais j'arrive pas a le faire, j'ai beau essayer avec

    CAST OU CONERT EN SQL SERVER mais il me sort un message d'erreur :

    Conversion failed when converting datetime from binary/varbinary string.

    exemple :

    select cast(0xC3041501 AS datetime)

    0xC303104A
    0xC3030614
    0xC3024848
    0xC3031962

    merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Il aurait été intéressant que vous donniez aussi les valeurs attendues ...

    @++

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Par défaut
    Bonjour

    j'ai aucune idée des valeurs mais je sais que c'est de type date a 100%.

    merci

  4. #4
    Membre expérimenté Avatar de TheRussian
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 200
    Par défaut
    Bonjour,

    je n'ai jamais stocké les dates en binary mais j'ai remarqué un truc bizarre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT cast(convert(datetime, '2013-31-12 13:23') as binary(4)),
    	CAST(cast(convert(datetime, '2013-31-12 13:23') as binary(4)) As datetime)
    Le code ci-dessus perd la date lors de l'affichage alors que le code ci-dessous fonctionne correctement ..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT cast(convert(datetime, '2013-31-12 13:23') as binary(8)),
    	CAST(cast(convert(datetime, '2013-31-12 13:23') as binary(8)) As datetime)
    Je trouve ça curieux ...

  5. #5
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Par défaut
    bonjour

    mais mon cas ce n'est pas de convertir une date en binary (4), c'est l'inverse .

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Par défaut
    bonjour,

    Je ne pense pas que vos données soit une date, il doit y avoir une confusion.

    En effet, la date max de SQL est représentée par la valeur suivante : '9999-12-31 23:59:59.997' qui en binary(4) à pour valeur 0x018B81FF.
    Si je regarde les data que vous nous proposez, celles-ci sont très largement supérieures.

  7. #7
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2012
    Messages : 36
    Par défaut Conversion type de données binary(4) en datetime
    Bonjour tous le monde

    je viens vers vous au sujet de la conversion d'un champ binary(4) en datetime , j'ai pu avoir des exemple concret les voila:

    0xC3030836 ça donne 22/06/1985

    0xC3041349 ça donne 01/12/2014

    merci d'avance

  8. #8
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonsoir,

    J'avoue que je ne vois pas du tout quel cheminement permet de passer de la valeur binaire à une date.

    Si on soustrait les deux valeurs, on tombe sur "0x010B13"
    Ce qui correspond à 68371 en décimal.

    Ce ne sont pas des jours, car 68371 / 365.25 = 187,1895962 soir 187 ans.
    Hors, entre 1985 et 2014 on est loin d'avoir 187 ans...

    Donc exit la conversion "date pivot + nombre de jours".

    Si on effectue les soustractions byte par byte, on se retrouve avec :

    0xC3 / 0x03 / 0x08 / 0x36 => 195 / 3 / 8 / 54
    0xC3 / 0x04 / 0x13 / 0x49 => 195 / 4 / 19 / 73

    73 - 54 = 19
    19 - 8 = 11
    4 - 3 = 1
    195 - 195 = 0

    On se retrouve avec une différence de 1 unité, 11 autres unités et 19 autres unités.
    2014 - 1985 = 29
    12 - 6 = 6
    1 - 22 = 10 (en partant du principe qu'il y a un modulo 31 pour les jours)

    BREF : rien à voir avec la choucroute !

    Ho putain !

    J'ai peut-être une idée.

    Imaginons un mongolien qui n'a rien compris à la représentation hexa.
    Et qui donc fait des calculs décimaux sur des valeurs hexa.

    Il préfixe ces dates par "C3" histoire de se rappeler que c'est son "idée de crétin numéro 3".

    Et on arrive donc à :

    30836 ------------->22/06/1985

    41349 ------------->01/12/2014

    Si je fais 41349 - 30836 j'obtiens 10513

    Si je divise 10513 par 365,25 j'obtiens environ 28,78 ans ce qui semble pas trop mal (enfin, presque)

    Hors, du 22/06/1985 au 01/12/2014 on a 10754 jours... (29,44 ans)

    Mardouille... Je croyais avoir percé le secret de l'autiste... Encore raté

    Hmmmm... Sinon, juste un truc bête comme ça en passant...

    Ton pseudo fait quelque peut référence à la religion musulmane.
    Ton programme aurait-il pu être écrit par un musulman en se basant sur une représentation calendaire non occidentale (calendrier hégirien ?)

    Car si on parle en phase de lunes, ça pourrait expliquer pourquoi un bête décompte de jours en années ne fonctionne pas.

    En tout cas, sans plus d'éléments, j'ai plus de flèche à mon arc.

    Autre possibilité (mais là ce serait énorme) : la colonne binaire fait référence à la clé primaire d'une table fourre-tout qui contient en identifiant cette valeur rattachée à la date... A creuser aussi peut-être.

Discussions similaires

  1. Erreur de syntaxe lors de la conversion d'une valeur datetime
    Par info3licen dans le forum Débuter avec Java
    Réponses: 10
    Dernier message: 28/05/2011, 01h31
  2. conversion des dates string datetime en sql server 2008
    Par banger dans le forum Langage SQL
    Réponses: 1
    Dernier message: 03/12/2008, 10h39
  3. Conversion d'une donnée DateTime SQL en Time
    Par dcarroz dans le forum ASP.NET
    Réponses: 2
    Dernier message: 18/06/2008, 12h53
  4. Conversion Date Access en Datetime SQL Server 2005
    Par Eratosten dans le forum Langage SQL
    Réponses: 1
    Dernier message: 27/05/2008, 14h00
  5. Problème de Conversion de string en DateTime
    Par mambo dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/12/2007, 17h27

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