[Access] calculer des temps en seconde
chabRRR
Messages postés
63
Statut
Membre
-
blux Messages postés 27912 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27912 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
J'ai un problème avec access. J'ai une table LOGXITI qui contient des champs Date et Heure (au foramt 01010001 pour la date et 01:01:01 pour l'heure).
SESSION (Idsession, Nsession, datesession, codecat)
LOXITI(Nlog, ID, Date, Heure, Description)
Avec les relations suivantes
SESSION.Idession=LOGXITI.Idlog
Copie d'écran de la table SESSION
https://www.cjoint.com/?doliesaz6F
Je souhaite calculé la différence entre l'heure de fin de session et l'heure de début de session afin de connaitre le temps écoulé lors de chaque session.
Je dois pouvoir récupérer le premier tuple de la table LOGXITI et le dernier tuple, pour une chaque session (cf pj)
Comment je peux calculer cette différence entre les tuples ? Dois je traiter les heures en base 60 ? Est ce possible de transformer une heure en numérique (00:05:10 devient 310 puis on peux faire les soustraction facilement ?) ? Comment gérer les heures nouvelles entre 01:59:59 et 02:00:01 et pire entre 23:59:59 et 00:00:01 du jour suivant ?
Je ne sais pas trop comment faire ?
Merci d'avance
NB : mes champs heure et date sont definis en date/heure et numérique.
J'ai un problème avec access. J'ai une table LOGXITI qui contient des champs Date et Heure (au foramt 01010001 pour la date et 01:01:01 pour l'heure).
SESSION (Idsession, Nsession, datesession, codecat)
LOXITI(Nlog, ID, Date, Heure, Description)
Avec les relations suivantes
SESSION.Idession=LOGXITI.Idlog
Copie d'écran de la table SESSION
https://www.cjoint.com/?doliesaz6F
Je souhaite calculé la différence entre l'heure de fin de session et l'heure de début de session afin de connaitre le temps écoulé lors de chaque session.
Je dois pouvoir récupérer le premier tuple de la table LOGXITI et le dernier tuple, pour une chaque session (cf pj)
Comment je peux calculer cette différence entre les tuples ? Dois je traiter les heures en base 60 ? Est ce possible de transformer une heure en numérique (00:05:10 devient 310 puis on peux faire les soustraction facilement ?) ? Comment gérer les heures nouvelles entre 01:59:59 et 02:00:01 et pire entre 23:59:59 et 00:00:01 du jour suivant ?
Je ne sais pas trop comment faire ?
Merci d'avance
NB : mes champs heure et date sont definis en date/heure et numérique.
A voir également:
- [Access] calculer des temps en seconde
- Comment calculer la moyenne sur excel - Guide
- Renommer plusieurs fichiers en même temps - Guide
- 1 milliard en seconde - Accueil - Technologies
- Acer quick access - Forum Logiciels
- Maps satellite en temps réel - Guide
13 réponses
Mission complete
merci, je vérifie que j'ai plus aucune question et je marque le formu en problème résolu
Merci bcp
merci, je vérifie que j'ai plus aucune question et je marque le formu en problème résolu
Merci bcp
Salut,
la fonction datediff fait ça très bien :
a = datediff("s",datedeb,datefin)
Il faut cependant concaténer ta date et ton heure puis la transfomer en format date...
datedeb = cdate(date & " " & heurelog)...
la fonction datediff fait ça très bien :
a = datediff("s",datedeb,datefin)
Il faut cependant concaténer ta date et ton heure puis la transfomer en format date...
datedeb = cdate(date & " " & heurelog)...
Bon, ça parait simple comme tu me le présente.
mais j'ai pluisieurs problème :
1.tu as du remarqué dans ma table que la date est au format AAAAMMJJ. Je n'arrive pas a faire un CDate la dessus.
2. je ne vois pas où utiliser cette fonction ? dans une requete ?
mais j'ai pluisieurs problème :
1.tu as du remarqué dans ma table que la date est au format AAAAMMJJ. Je n'arrive pas a faire un CDate la dessus.
2. je ne vois pas où utiliser cette fonction ? dans une requete ?
1 - Le format n'est qu'un format d'affichage...
Tu peux donc le remettre en French avec format...
Un truc comme ça :
a = datediff("s",cdate(format(datedeb,"jj/mm/aa") & " " & heurelog)),cdate(format(datefin,"jj/mm/aa") & " " & heurelog)))
2 - Où tu veux !
SELECT datediff("s",cdate(format(datedeb,"jj/mm/aa") & " " & heurelog)),cdate(format(datefin,"jj/mm/aa") & " " & heurelog))) FROM ...
J'ai pas vériifé les parenthèses...
Tu peux donc le remettre en French avec format...
Un truc comme ça :
a = datediff("s",cdate(format(datedeb,"jj/mm/aa") & " " & heurelog)),cdate(format(datefin,"jj/mm/aa") & " " & heurelog)))
2 - Où tu veux !
SELECT datediff("s",cdate(format(datedeb,"jj/mm/aa") & " " & heurelog)),cdate(format(datefin,"jj/mm/aa") & " " & heurelog))) FROM ...
J'ai pas vériifé les parenthèses...
j'arrive a rien, j'arrive toujours pas a faire ni le cdate, ni le diffdate
Commençons par le Cdate
je comprends pas pourquoi ça ne marche pas
j'ai mis dans une requete un expr tel quel
Date1: CDate(LOGXITI.[Date] & " " & LOGXITI.[Heurelog])
en sql
SELECT LOGXITI.Date, LOGXITI.Nlog, LOGXITI.Heurelog, CDate(LOGXITI.[Date] & " " & LOGXITI.[Heurelog]) AS Date1
FROM LOGXITI;
jai le doit a un jolie #Erreur dans le resultat de requete
qu'est ce que tu en penses ?
Commençons par le Cdate
je comprends pas pourquoi ça ne marche pas
j'ai mis dans une requete un expr tel quel
Date1: CDate(LOGXITI.[Date] & " " & LOGXITI.[Heurelog])
en sql
SELECT LOGXITI.Date, LOGXITI.Nlog, LOGXITI.Heurelog, CDate(LOGXITI.[Date] & " " & LOGXITI.[Heurelog]) AS Date1
FROM LOGXITI;
jai le doit a un jolie #Erreur dans le resultat de requete
qu'est ce que tu en penses ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ben voui, mais date est une donnée 'date' ou 'chaine'...
Si c'est date, ça devrait marcher, si c'est une chaine, il faut reformater (mid, left,right) pour mettre des / afin de retransformer en format date avec cdate...
Si c'est date, ça devrait marcher, si c'est une chaine, il faut reformater (mid, left,right) pour mettre des / afin de retransformer en format date avec cdate...
c'est au format 'numérique' enfin 'donnée mais pas date. je peu pa le mettre en date, il me dit probleme de conversion de format
j'ai essayé de remmetre la date au format jj/mm/aaaa pour ensuite pouvoir cchanger de format, j'ai réussi a séparer aaaa de mm et de jj dans 3 champs d'une requete mais je sais pas comment recomposer au format jj/mm/aaaa ?
j'ai tenté un truc comme Date
j'ai essayé de remmetre la date au format jj/mm/aaaa pour ensuite pouvoir cchanger de format, j'ai réussi a séparer aaaa de mm et de jj dans 3 champs d'une requete mais je sais pas comment recomposer au format jj/mm/aaaa ?
j'ai tenté un truc comme Date
ça y est, j'ai réussi le coup de mettre la date au format jj/mm/aaaa mais impossible de faire une requete de mise a jour de ma table pour remplacer la date aaaa/mm/jj
maintenant, j'essaye de mettre cette nouvelle date au format jj/mm/aaaa dans table pour remplacer l'autre
maintenant, j'essaye de mettre cette nouvelle date au format jj/mm/aaaa dans table pour remplacer l'autre
J'ai toujours pas réussi, mais je me rapproche ; j'ai réussi a mettre la date au format voulu 'date/heure'
J'ai le requete sql suivante
SELECT DateDiff("s",CDate(Format(SESSION.Date,"""jj""/mm/""aaaa""") & " " & LOGXITI.heurelog),CDate(Format(SESSION.Date,"""jj""/mm/""aaaa""") & " " & LOGXITI.heurelog)) AS DeltaT
FROM [SESSION], LOGXITI;
Mes champs heure et date sont au bon format mais il proviennent de différentes tables. Le resultat de la requete est #erreur. Pouvez vous m'aider ? merci
J'ai le requete sql suivante
SELECT DateDiff("s",CDate(Format(SESSION.Date,"""jj""/mm/""aaaa""") & " " & LOGXITI.heurelog),CDate(Format(SESSION.Date,"""jj""/mm/""aaaa""") & " " & LOGXITI.heurelog)) AS DeltaT
FROM [SESSION], LOGXITI;
Mes champs heure et date sont au bon format mais il proviennent de différentes tables. Le resultat de la requete est #erreur. Pouvez vous m'aider ? merci
J'ai essayé en prenant les champs date et ehurelog dans un meme table LOGXITI mais ça marche pas non plus ...
la requete marche, merci
premiere mission réussi
maintenant, je ne sais pas comment je vais pouvoir déterminer mes datedeb et datefin. Le resultat de la requete est le suivant:
https://www.cjoint.com/?dqlSL3bRLv
en sql
SELECT SESSION.Nsession, CDate(SESSION.[Date] & " " & [heurelog]) AS datedeb, CDate(SESSION.[Date] & " " & [heurelog]) AS datefin, LOGXITI.Nlog
FROM [SESSION] INNER JOIN LOGXITI ON SESSION.IDsession = LOGXITI.IDlog
GROUP BY SESSION.Nsession, CDate(SESSION.[Date] & " " & [heurelog]), CDate(SESSION.[Date] & " " & [heurelog]), LOGXITI.Nlog;
Je souhaite recuperer la premiere et derniere date pour une session. Autrement dit, je souhaite recuperer la datedeb (la premiere pour un Nsession) et la datefin (la derniere pour cette meme Nsession)
ex: pour la session Nsession=1, datedeb doit valoir la date du premier Nlog=769 et datefin du Nolg=771
Le nombre de Nlog par Nsession est variable
pour la session Nsession=18, datedeb doit valoir la date du premier Nlog=820 et datefin du Nolg=823
premiere mission réussi
maintenant, je ne sais pas comment je vais pouvoir déterminer mes datedeb et datefin. Le resultat de la requete est le suivant:
https://www.cjoint.com/?dqlSL3bRLv
en sql
SELECT SESSION.Nsession, CDate(SESSION.[Date] & " " & [heurelog]) AS datedeb, CDate(SESSION.[Date] & " " & [heurelog]) AS datefin, LOGXITI.Nlog
FROM [SESSION] INNER JOIN LOGXITI ON SESSION.IDsession = LOGXITI.IDlog
GROUP BY SESSION.Nsession, CDate(SESSION.[Date] & " " & [heurelog]), CDate(SESSION.[Date] & " " & [heurelog]), LOGXITI.Nlog;
Je souhaite recuperer la premiere et derniere date pour une session. Autrement dit, je souhaite recuperer la datedeb (la premiere pour un Nsession) et la datefin (la derniere pour cette meme Nsession)
ex: pour la session Nsession=1, datedeb doit valoir la date du premier Nlog=769 et datefin du Nolg=771
Le nombre de Nlog par Nsession est variable
pour la session Nsession=18, datedeb doit valoir la date du premier Nlog=820 et datefin du Nolg=823
Tu fais une requête avec le prédicat TOP 1 qui te renvoie la première donnée... Il suffit de trier un coup en ascendant et un autre en descendant...
SELECT TOP 1 session FROM table WHERE NSESSION = 1 ORDER BY session... ou un truc du genre
SELECT TOP 1 session FROM table WHERE NSESSION = 1 ORDER BY session... ou un truc du genre