2009-08-17 7 views
1

Utilisation d'Access 2003Comment obtenir une valeur de temps totale appropriée?

Tableau

PersonID TotalHours 

111 12.23.34 
111 23.32.23 
111 14.32.23 
222 00:23:32 
222 01:00:00 

ainsi de suite ...,

TotalHours type de données est Datetime

requête utilisée.

Select Personid, sum (TotalHours) from table group by personid. 

Il Affichage

Personid TotalHours 

111 4.30842592592593 
222 7.93241898148148 

ainsi de suite ...,

Je veux montrer un format de l'heure, dans la Somme (TotalHours). Comme (HH: MM: SS)

Sortie

Personid TotalHours 

111 32:44:23 
222 23:11:22 

ainsi de suite ...,

attendu Besoin d'aide de requête.

+0

Vos totaux (par exemple « 32:44:23 ") n'a pas de sens, et êtes-vous sûr que" 12.23.34 "est datetime? – gbn

+0

@gbn. Je mets un exemple de sortie. Je ne mettrai pas la sortie exacte. J'ai besoin du format (hh: mm: ss). D'accord.... – Gopal

Répondre

1

Ce qui se passe est qu'il est un total de la représentation numérique des temps

Vous pouvez faire ceci:

Select Personid, cdate(sum (TotalHours)) as GrandTotal 
from table 
group by personid. 

Mais vous allez obtenir des résultats qui ressemblent à:

111 1900-01-01 2:28:10 AM 
222    1:23:32 AM 

Cela parce que Personalid 111 dépasse 24 heures

Ce que vous avez vraiment e to do est smoosh les temps en quelques secondes; puis ajoutez-les; et ensuite le diviser en heures/minutes/secondes à nouveau; Je l'ai fait avec deux requêtes

[time_1 definition] 

SELECT time_tab.pid, 
    Sum(Hour([time]) * 3600 
    + Minute([time]) * 60 
    + Second([time])) AS time_total 
FROM time_tab 
GROUP BY time_tab.pid; 


[time_2 definition] 

SELECT time_1.pid, 
    Int([time_total]/3600) AS h, 
    Int(([time_total]-Int([time_total]/3600) * 3600)/60) AS m, 
    [time_total] 
     - (Int(([time_total]-Int([time_total]/3600) * 3600)/60)*60 
      + (Int([time_total]/3600)*3600)) AS s 
FROM time_1 

qui me donne

111 50 28 10 
222 1 23 32 

OU

[time_2 definition] 

SELECT time_1.pid, 
    Int([time_total]/3600) & ":" 
     & Int(([time_total]-Int([time_total]/3600) * 3600)/60) & ":" 
     & [time_total] 
      - (Int(([time_total]-Int([time_total]/3600) * 3600)/60) * 60 
      + (Int([time_total]/3600)*3600)) AS grand_total 
FROM time_1 

qui me donne

111 50:28:10 
222 1:23:32 
Questions connexes