Aller au contenu

Champ date MySQL


Sujets conseillés

Posté

Bonjour

Je me connecte à la base de données (MySQL un peu modifié) d'un logiciel de gestion, pour lequel on doit récupérer des dates de promotions.

Les développeurs nous disent qu'il s'agit de timestamp, mais voici ce que ça donne :

01/01/2008 = 131596545

30/09/2010 = 131726694

01/11/2001 = 131795713

Donc on voit bien que ça correspondant pas *du tout* au timestamp Unix habituel...

Est-ce que ça pourrait être un autre type de champ, ou bien auraient-ils modifié le code pour changer le timestamp avec un décalage ? (pour qu'on soit obligés de passer par eux pour utiliser la base de données - il y a déjà certains données cryptées, et c'est un ODBC maison)

Si vous avez une idée... :unsure:

Posté

Bon et bien on a fini par trouver :smartass:

Il faut diviser la valeur par 2^16, la partie entière est l'année, puis le reste est ensuite divisé par 2^8 ça donne le mois, et si on soustrait à la valeur le 2^16 et le 2^8 ça donne le jour :wacko:

C'est un champ spécial que je ne connais ou bien c'est maison ?

Posté

C'est bien un timestamp, du moins moi je l'ai toujours vu sous cette forme ! Pour obtenir le timestamp de l'instant T : mktime();

Pour le convertir en date lisible c'est déjà plus complexe mais en cherchant un peu sur le web tu devrais même pouvoir trouver des scripts prêts à l'emploi.

EDIT : Je viens de trouver ça si ça peut t'aider :

<?php
echo 'Le '.date('d/m/Y', 1234567890).' à '.date('H:i:s', 1234567890);
?>

Finalement c'est pas si compliqué que ça

Posté

Salut,

Je crois avoir compris : a priori, tes champs seraient stockés en bdd sous le type "date", qui occupe 3 octets, d'où la décomposition un peu spéciale. Si tu veux des vrais timestamp, autant utiliser des timestamps des 2 côtés. Ou alors tu fais un cast en timestamp avant de récupérer l'info.

Posté

_AT_Wolf : non ce n'est pas un Timestamp justement, tu penses bien que j'avais commencé par ça !

J'ai la valeur du champ et sa correspondance en clair dans l'application, et il y a + de 30 ans d'écart... :whistling:

Le Timestamp je connais et je l'applique déjà (quand c'est approprié), et en l'occurrence ici c'est du VB donc pour convertir on fait : (valeur/86400)+25569

_AT_MarvinLeRouge : en fait c'est stocké en binaire oui. Nous ne sommes pas créateur de l'appli, nous récupérons juste des informations pour les afficher ailleurs...

Merci d'avoir regardé.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...