Conversion date to datetime mysql

Fermé
uebuebu - 2 déc. 2008 à 15:05
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 - 4 déc. 2008 à 13:26
Bonjour,
J'ai actuellement un probleme pour comparer des dates, j'utilise le format date sous mysql mais pour comparer des dates il faut avoir un format datetime, g regarder sur le net et mm essayé un algo de passage mais ca marche pas, je 'nai trouvé que des docs pr faire la conversion inverse,si qq1 a une idée sur le sujet merci de la partager.


ps: Je peux toujours faire champ par champ en manipulant la date je c mais c long et laborieux et j'pense que ce serait réinventer la roue qui doit deja exister.

19 réponses

xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
2 déc. 2008 à 15:21
le mieux pour ça c'est l'utilisation du timestamp:
le timestamps c'est le nombre de seconde écoulé depuis le 1er janvier 1970 (me demande pas pourquoi, ça a été definis comme ça, s'tout ^^)
Comme ce nombre est en seconde, ça facilite énormément la tache pour les conversion/comparaison.

Pour convertir tes date en timestamp:
* au format fr (DD-MM-YYYY HH:MM:SS)
exemple: strtotime('11-09-2001 8:46:26');
* au format US ( YYYY-MM-DD HH:MM:SS)
exemple: echo strtotime('2001-09-11 8:46:26');

ensuite pour réafficher une date "normale":
date("d/m/Y H:i:s", 1000212386) => 1000212386 est le timestamp de 11/09/2001

ensuite il te serra très simple de faire tes comparaisons ;)
3
Merci de ta reponse, encore toi ^^
Le truc c que ca marche pr des dates définis, mais ac des variables tu ferais cmt?
Et c pareil apres on compare cmt? avec le 1228086000 qu'on obtient?
Par exemple moi je me sert juste de la date, pas de l'heure, pr j'aimerais faire un truc comme ca :
strtotime('$datetest 0:00:00')
mais ca marche aps, j'suis sur t'as ton idée sur cmt faire :)
Merci de me redire ca
1
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
2 déc. 2008 à 16:10
Pour commencer on va enregistrer le timestamp que tu as récupéré dans une variable,
SI $datetest est au format dd-mm-yyyy ça devrais fonctionner même sans l'heure (je crois):
$inscription = strtotime($datetest);
$toutesuite = time();

time() retourne le timestamps qu'il est lors de l'exécution de la page.
ensuite tu peux faire tes comparaisons, par exemple:
$tempdepuislinscription = $toutesuite - $inscription;

ici $tempdepuislinscription serra le nombre de secondes entre le moment de l'inscription et "maintenant";
Puis; il suffis simplement de diviser cette variable par 3600 pour avoir le nombre d'heure ou par 86400 pour avoir le nombre de jour, exemple:
$jourdepuislinscription = ($tempdepuislinscription / 86400);
echo "vous etes inscrit depuis ".$jourdepuislinscription." jours";

tu peut utiliser les fonction intval() qui retourne la valeur approché a l'entier le plus proche
1
K j'vais tester ca merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
C bien ce que je pensais, le pb c que strtotime ne marche pas avec $datetest qui est un type date et pas datetime, il doit lui falloir l'heure.
Mm en concatenant l'heure a la fin ca marche pas, t'as une idée ou bien t a cour?
Merci encore
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 08:39
fais un echo de ton $datetest, quel est le résultat affiché?
0
Le strtotime sur $datetest affiche -1, message d'erreur sur PHP< v5.1.0
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 09:07
pas le strtotime, juste echo $datetest
pour que je vois a quoi ça correspond :)
0
Ah,
datetest c une date que je rentre dans un formulaire de ma page de la forme 02/12/2008 par exemple
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 09:40
Voila le problème donc :)
Essaye avec une date en XX-XX-XXXX plutôt que XX/XX/XXXX
Au pire, si tes date sont en XX/XX/XXXX dans ta base de donnée, tu peut utiliser un str_replace:

$datetest = str_replace("/", "-", $datetest);
0
Oué bien vu la ca marche, le truc c que j'obtiens pas du tt ce que je souhaite -_-
Deja qd je rentre la date du jour, que je la soustrais avec celle qui vaut time() ca m'affiche 27/06/1970 15:01:00, alors qu'on devrait avoir 0, enfin moi c ce que je voudrais.
(Genre si on fait 12-12-2008 - 05-12-2008 on obtient 7).
Si tu c si ca peux se faire dis moi, sinon
Je pense que je vais faire un algo en prennant le cas par cas finalement O_o
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 10:26
Comme ça ? :D

$date1 = strtotime("12-12-2008");
$date2 = strtotime("05-12-2008");
$date = $date1 - $date2;
$heure = $date/3600;
$jour = $date/86400;
echo "la difference entre les deux date est de ".$jour." jours; soit ".$heure." heures";

Et comme tu a pus t'en apercevoir, comme je l'avais dis => l'heure n'est pas obligatoire :)
;)
0
Bien vu ca marche , mais t'obtiens koi toi au juste? ^^
Parce que chez moi ac ton exemple ca donne :
la difference entre les deux date est de 2557 jours; soit 61368 heures
-_-
ces 7 petits s'allonge bien ds l'tps ma parole :p
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 11:29
Heuuu .. la j'avoue que je vois pas, moi si je fais u copier/coller exacte de ce que je t'ai passé, ça m'affiche le bon résultat:
la différence entre les deux date est de 7 jours; soit 168 heures
t'aurais pas remplacer une variable ou autre ?
essaye de copier/coller le code dans un fichier vierge, sans rien modifier, ça donne quoi ?
0
Bah la on tombe sur un nonos j'crois bien ^^
Nan rien a faire ca m'affiche tjs la mm chose, ptetre que ma version de php est trop vieille et marche pas comme la plus recente, c laquelle ta version?
0
Rectif,
J'fonctionne ac php 5.0.3, donc ma version est ptetre trop récente, mais pas l'inverse, mais ce serait vraiment étonnant.
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
3 déc. 2008 à 15:29
Bah d'après php.net ça devrais pas poser de problème.
essaye quand même une bonne mise a jour de ton php...

sinon donne moi le résultat de ça (change rien, fais copier/coller tel quel, pour comparer):
<?php
$date1 = strtotime("12-12-2008");
echo "date1 = ".$date1."</br>";
$date2 = strtotime("05-12-2008");
echo "date2 = ".$date2."</br>";
$date = $date1 - $date2;
echo "date (en sec) = ".$date."</br>";
$heure = ($date/3600);
$jour = ($date/86400);
echo "la difference entre les deux date est de ".$jour." jours; soit ".$heure." heures";
?>
0
Ca donne ca, si je change les nombres ca change aussi(donc la mise a jour des données est bien faite)
date1 = 1527717600
date2 = 1306792800
date (en sec) = 220924800
la difference entre les deux date est de 2557 jours; soit 61368 heures
0
Au cas ou ca t'interesserait, g fini par transformer mes dates en heures, pr comparer c tout aussi simple, c jolie et ca marche :)
Mais je c tjs pas pk on a pas le mm affichage sur le test, ca me laisse perplexe -_-
++
0
xxkirastarothxx Messages postés 378 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 22 mars 2013 40
4 déc. 2008 à 13:26
Ah bah content que ça ai marché enfin :)
J'avoue que c'est space...
je pense que ça dois etre a cause du format.
Comme nous n'avons pas les même version de php (je suis en 5.2.5) il est possible que ta version force le format americain ou une connerie dans le genre...

Enfin bref, si ça fonctionne correctement c'est le princiaple :)

Bonne continuation a toi ;)
PS: pense a mètre en résolu si tu n'as pas d'autre questions ;)
0