Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1460 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Obtenir le temps restant

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Obtenir le temps restant

n°1477577
smoggin
Posté le 17-11-2006 à 18:02:04  profilanswer
 

Bonjour !
 
Je cherche une solution pour trouver le temps restant (ou le temps dépassé) entre une date (DATETIME) qui est enregistrée dans ma base et la date courante. J'ai cherché un peu mais je tatonne, je ne sais pas quelle solution peut convenir le mieux ...  :heink:  
 
Merci de votre aide :)

mood
Publicité
Posté le 17-11-2006 à 18:02:04  profilanswer
 

n°1477628
couak
Posté le 17-11-2006 à 19:43:05  profilanswer
 

je suppose que c'est en mysql (vu que rien n'est précisé)
fais un truc de ce style :

Code :
  1. select now()-champ_de_ta_table from ta_table;


tu obtients la différence en secondes

n°1477997
betsamee
Asterisk Zeperyl
Posté le 19-11-2006 à 07:25:47  profilanswer
 

couak a écrit :

je suppose que c'est en mysql (vu que rien n'est précisé)
fais un truc de ce style :

Code :
  1. select now()-champ_de_ta_table from ta_table;


tu obtients la différence en secondes


 :D  

n°1478009
moi23372
Posté le 19-11-2006 à 09:48:25  profilanswer
 

En oracle c'est la même chose.
En SQL SERVER on utilie DATEDIFF(...)

n°1478129
couak
Posté le 19-11-2006 à 16:57:13  profilanswer
 

non en oracle on utilise sysdate et pas now() :p

n°1478324
smoggin
Posté le 20-11-2006 à 11:25:09  profilanswer
 

couak a écrit :

je suppose que c'est en mysql (vu que rien n'est précisé)
fais un truc de ce style :

Code :
  1. select now()-champ_de_ta_table from ta_table;


tu obtients la différence en secondes


 
J'ai fais champ_de_ta_table-now(), ça me donne un nombre positif si la tâche est pas encore terminée et négatif si elle est dépassée. Ca c'est logique. Par contre quand je convertis les secondes obtenues en heures/min/sec, ça colle pas, le chiffre est trop grand...
 
c'est datediff qu'il faut utiliser alors? Arff  :pt1cable:
 
PS: au fait, oui c'est mysql !


Message édité par smoggin le 20-11-2006 à 11:25:50
n°1478429
couak
Posté le 20-11-2006 à 14:00:47  profilanswer
 

http://dev.mysql.com/doc/refman/4. [...] tions.html
datediff te donnera la différence en jours
qu'as tu utilisé pour faire la conversion ? pour la conversion tu as la fonction SEC_TO_TIME()
et comme toujours : lire le manuel :)

n°1478499
smoggin
Posté le 20-11-2006 à 14:54:25  profilanswer
 

Pour faire la conversion j'ai utilisé une fonction php que j'ai récupéré sur le net :
 

Code :
  1. function calcul_hours($temps)
  2. {
  3.   //combien d'heures ?
  4.   $hours = floor($temps / 3600);
  5.   //combien de minutes ?
  6.   $min = floor(($temps - ($hours * 3600)) / 60);
  7.   if ($min < 10)
  8.     $min = "0".$min;
  9.   //combien de secondes
  10.   $sec = $temps - ($hours * 3600) - ($min * 60);
  11.   if ($sec < 10)
  12.     $sec = "0".$sec;
  13.        
  14.   echo $hours."h".$min."m".$sec."s";
  15. }


 
Là j'ai changé, j'utilise TIMEDIFF(), le prob c'est que quand il y'a plus de 24h ça n'affiche pas X jours donc je sais pas trop comment enchainer...

n°1478520
couak
Posté le 20-11-2006 à 15:18:13  profilanswer
 

pourquoi se faire chier en php ? tu fais une requête du style :

Code :
  1. select SEC_TO_TIME(now()-champ_de_ta_table) from ta_table

et tu obtiens en HH:MM:SS le temps entre maintenant et ta date

n°1478526
smoggin
Posté le 20-11-2006 à 15:29:29  profilanswer
 

Oui mais le résultat que j'obtiens est pas cohérent :'(
 
Genre avec la tache qui se termine à 16h18, là il est 15h27 et le resultat de la requête c'est 02:31:03

mood
Publicité
Posté le 20-11-2006 à 15:29:29  profilanswer
 

n°1478668
couak
Posté le 20-11-2006 à 17:38:20  profilanswer
 

bon effectivement la soustraction a l'air de poser des pb sous mysql
il faut utiliser timediff et tu obtients en HH:MM:SS la différence entre les deux dates

Code :
  1. select timediff(now(), champ_de_ta_table) from ta_table;

n°1479017
smoggin
Posté le 21-11-2006 à 09:18:34  profilanswer
 

Oui, mais quand y'a plus de 24h? c'est ça mon problème maintenant :/

n°1485046
Blackhawk8
Posté le 01-12-2006 à 16:08:49  profilanswer
 

en fait il semblerait que (champ-now()) renvoi une valeur en 20e de seconde
pour obtenir le resultat en seconde il faut diviser par 50 environ
ensuite pour le resultat tu le divise toi même pour connaitre le nbre de jours, heures, etc


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Obtenir le temps restant

 

Sujets relatifs
fonction qui s'autoexecute a chaque periode de temps definiTemps d'execution d'un programme
[C] comment simuler l'écoulement du temps ?temps d'execution qui augmente
Obtenir adresse ip externe (internet) de la passerelle ? image inside!Sessions qui ne durent pas dans le temps
En combien de temps ?comment obtenir un objet à partir de son nom ?
Obtenir le Jour sous Dos 
Plus de sujets relatifs à : Obtenir le temps restant


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR