[Access] calculer des temps en seconde

Fermé
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 - 14 mars 2007 à 11:20
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 - 10 oct. 2007 à 19:11
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.

13 réponses

chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
16 mars 2007 à 14:44
Mission complete

merci, je vérifie que j'ai plus aucune question et je marque le formu en problème résolu

Merci bcp
1
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
14 mars 2007 à 12:56
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)...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
14 mars 2007 à 14:21
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 ?
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
14 mars 2007 à 14:42
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...

0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
14 mars 2007 à 16:11
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 ?
0

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

Posez votre question
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
14 mars 2007 à 16:18
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...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
14 mars 2007 à 16:24
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
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
14 mars 2007 à 16:36
ç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
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
16 mars 2007 à 11:08
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
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
16 mars 2007 à 11:21
J'ai essayé en prenant les champs date et ehurelog dans un meme table LOGXITI mais ça marche pas non plus ...
0
chabRRR Messages postés 63 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 27 novembre 2018 5
16 mars 2007 à 11:44
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
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
16 mars 2007 à 13:24
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
0
Bonjour, j'ai un problème à résoudre,qui ai le suivent!
une classe de cm1 regarde un film donc le début et à 15h35 et la fin à 16h20
quel est la duré de se film!
pourriez-vous m'aider merci.
0
blux Messages postés 25978 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 19 avril 2024 3 287
10 oct. 2007 à 19:11
C'est un problème de cm1, non ?
0