iNCiTE Web Posté 28 Décembre 2011 Posté 28 Décembre 2011 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...
iNCiTE Web Posté 28 Décembre 2011 Auteur Posté 28 Décembre 2011 Bon et bien on a fini par trouver 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 C'est un champ spécial que je ne connais ou bien c'est maison ?
Wolf18 Posté 28 Décembre 2011 Posté 28 Décembre 2011 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 : <?phpecho 'Le '.date('d/m/Y', 1234567890).' à '.date('H:i:s', 1234567890);?> Finalement c'est pas si compliqué que ça
MarvinLeRouge Posté 28 Décembre 2011 Posté 28 Décembre 2011 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.
iNCiTE Web Posté 29 Décembre 2011 Auteur Posté 29 Décembre 2011 _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... 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é.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant