• imprimer
  • aide

Forum de discussions « PHP - SQL »

Retrouvez les publications relatives à ces discussions dans nos rubriques PHP, SQL.

conversion date excel vers SQL

liste des forums liste des discussions Participer à la discussion

Photo de Styleman Message publié le mardi 10 août 2010 - 18h28 par Styleman. ++ Styleman
Bonjour à tous,

Alors, j'espère que la question n'a pas déjà été posée mais malgré mes recherches, je n'ai rien vu (en même temps j'ai déja du mal à exprimer ce que je veux donc pour chercher c'est pas facile).

Alors voilà, j'ai reçu une belle liste excel reprenant une liste d'évènements et leur date et heure.

Seulement, lorsque j'importe cela dans ma table SQL, il me met la date au format Excel, donc pour le 05/09/2010 j'ai "40426" et l'heure qui est 13:00 en format heure donne "0.45166666...", alors je me suis dis que c'était peut etre tout simplement en timestamp et que je pouvais convertir cela assez facilement, mais non, je ne trouve pas...apparemment c'est le même principe mais depuis le 1er janvier 1900...Mais j'avoue que je n'ai pas encore bien réussi à faire le calcul...

Donc voilà, maintenant que ces dates sont comme ça dans ma table, il me faudrait le moyen de les convertir avec php, ou alors de faire en sorte qu'en les important à partir du XLS, elle se mettent directement dans le bon format dans ma base...

Merci beaucoup pour votre aide.
Photo de arthenon Message publié le vendredi 20 août 2010 - 18h18 par arthenon.
Bonjour,

J'ai le même problème que toi..
En fouillant sur internet j'ai trouvé ceci :

//select dateadd(day,-2,39083)

(http://www.eggheadcafe.com/software/aspnet/30462348/how-to-convert-excel-date-seriel-number-to-sql-datetime.aspx
http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=124600)

Mais je n'ai pas réussi à l'appliquer.

Si jamais tu trouves une solution merci de me faire signe ! Je continue de mon côté à résoudre ce problème.
Photo de nours312 Message publié le vendredi 20 août 2010 - 22h02 par nours312. modérateur nours312.com -- je ne suis pas codeur bénévol, mais j'aide gratos ;)
Seulement, lorsque j'importe cela dans ma table SQL, il me met la date au format Excel, donc pour le 05/09/2010 j'ai "40426" et l'heure qui est 13:00 en format heure donne "0.45166666...", alors je me suis dis que c'était peut etre tout simplement en timestamp et que je pouvais convertir cela assez facilement, mais non, je ne trouve pas...apparemment c'est le même principe mais depuis le 1er janvier 1900...Mais j'avoue que je n'ai pas encore bien réussi à faire le calcul...
heuu ... une hypothèse :: tu est sur de ton Heure ??

t'es sur que ce n'est pas "0.54166666..." ??? auquel cas, j'aurais la solution !... :D :p

(13:00:00 = 13*60*60 => en seconde) / (24*60*60 => secondes) => "0.54166666..." ou 54,16% de la journée si tu préfères !... ainsi, une fois que tu as tous tes résultats dans une table "tampon", tu dois aisément pouvoir en extraire les données MySQL ...

pour la date, il semblerait qu'elle soit en jours ... dans ce cas, tu utilises :
SELECT DATE_SUB( '2010-09-05', INTERVAL 40426 DAY ) ; // pour retrouver la date de référence : =>1899-12-30 // Bizard ^^ SELECT DATE_ADD('1899-12-30, INTERVAL 40426 DAY); // pour retrouver la date qui t'intéresse !..

par contre vérifie !... c'est une hypothèse, mais si elle est fondée, ce sont les paramètres qui sont faux !...

@++
Photo de arthenon Message publié le jeudi 02 septembre 2010 - 12h27 par arthenon.
Voici une solution qui m'a permis de résoudre mon problème :


Pour convertir une date excel en timstamp unix :


Le timestamp Unix est spécifié en seconde depuis le 1er janvier 1970 à minuit.

Sous excell le chiiffre correspondant au 01/01/1970 à 24h 00 00 est 25570,00000

Donc sur excel :

(A1 - 25569)*86400

puis utiliser une fonction date() php pour convertir en format date mySql

un site util pour le timestamp :

http://www.timestamp.fr/
Photo de Styleman Message publié le mercredi 29 septembre 2010 - 17h02 par Styleman. ++ Styleman
Merci à tous, j'ai procédé comme suit:

convert an "excel" formatted date. Example:

<?php

$excel_date = 40179;

$normal_date = date("m/d/Y", strtotime("01/01/1900 + $excel_date days - 2 days"));

echo($normal_date);

?>

result: "01/01/2010"

liste des forums liste des discussions Participer à la discussion

Vous devez obligatoirement vous identifier en tant que membre pour participer à cette discussion.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.

Les 5 dernières discussions