Convertir integer en time ?

ladenree76 Messages postés 8 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 28 septembre 2004 - 28 sept. 2004 à 16:41
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 28 sept. 2004 à 21:28
Bonjour,

J'ai une table contenant un champ au format numérique.

J'ai réussi à faire la somme avec un tquery :

select sum(nb) from table

mais comment ensuite convertir cette somme en un temps au format 00:00:00 ?

J'ai essayé :

select cast(sum(nb) as time) from table

mais sa me dit : différence de type dans l'expression

Que faire ?

Merci d'avance

1 réponse

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
28 sept. 2004 à 21:28
En supposant que ce soit de sminutes que tu stockes dans ton champ, voici une démarche possible :

- ajouter ta valeur à la date/heure actuelle pour obtenir une date future (ou passé si le nombre de minutes est négatif)
- soustraire la date actuelle à la valeur obtenue et tu obtiens une durée de type TDateTime.
Passons au code :
Uses DateUtils;

procedure TFGestionArticles.Button2Click(Sender: TObject);
var
  NewDate: TDateTime;
  Msg: string;
  Jours: integer;
  Maintenant: TDateTime;
const
  UnJour = 24 * 60;
begin
  Maintenant := Now;
  NewDate := IncMinute(Maintenant, UnJour);
  Jours := Trunc((NewDate - Maintenant) / UnJour);
  Msg := Format('Cela fera %d jours'+ sLineBreak, [Jours]);
  Msg := Msg + 'Durée : ' + FormatDateTime('hh:nn:ss.zz', NewDate - Maintenant) + sLineBreak;
  Msg := Msg + 'Nous serons le ' + FormatDateTime('dd/mm/yyy à hh:nn:ss', NewDate);
  ShowMessage(msg);
end;


L'affectation de Now à Maintenant est uniquement là pour éviter d'avoir des résultats erratiques puisque la fonction renvoie une heure différente à chaque appel.
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
Rejoignez-nous