webForumDet fria alternativet

Summa tid

24 svar · 598 visningar · startad av joel_joel88

joel_joel88Medlem sedan nov. 20021 049 inlägg
#1

Hej!

Hur gör jag för att summera tid som ligger i datum/tid tabell?

Peter SMedlem sedan dec. 20025 484 inlägg
#2

DBMS?

joel_joel88Medlem sedan nov. 20021 049 inlägg
#3

Jag kör med access till det här. Det går inte använda vanlig sum va?

LarsGMedlem sedan dec. 200012 465 inlägg
#4

Jag förmodar att du avser att summera tidsintervall och inte tidsangivelser. Lagra det som minuter(sekunder) och summera som vanligt.

joel_joel88Medlem sedan nov. 20021 049 inlägg
#5

Har gjort ett program i VB där jag matar in flygtid. Jag vill kunna summera flygtiden.
Jag skriver flyg tiden så här. TT:MM:SS

LarsGMedlem sedan dec. 200012 465 inlägg
#6
select sum(cint(mid(tc,1,2))*3600+cint(mid(tc,4,2))*60+cint(mid(tc,7,2)) from t

om du inte lagrar det som sekunder.

joel_joel88Medlem sedan nov. 20021 049 inlägg
#7

Jag får ett felmeddelande som säger att en operator saknas :o

Set rs = connect.Execute("select sum(cint(mid(flygtid,1,2))*3600+cint(mid(flygtid,4,2))*60+cint(mid(flygtid,  7,2)) as summa from flygtid")
LarsGMedlem sedan dec. 200012 465 inlägg
#8
ci  nt

Ser det ut så där i din fråga? Vad har du för datatyp i kolumnen?

joel_joel88Medlem sedan nov. 20021 049 inlägg
#9

Ser inte så ut i min kod. datatypen är datum/tid.

LarsGMedlem sedan dec. 200012 465 inlägg
#10

Det kanske inte går så bra att göra mid på en sådan typ.

Om du testar

Set rs = connect.Execute("select sum(cint(mid(cstr(flygtid),1,2))*3600) from flygtid")
joel_joel88Medlem sedan nov. 20021 049 inlägg
#11

Nu får jag inget felmeddelande men summan blir 0 :o

joel_joel88Medlem sedan nov. 20021 049 inlägg
#12

Någon som vet vad det kan vara för fel när jag får summan 0 även fast det är inmatade tider?

joel_joel88Medlem sedan nov. 20021 049 inlägg
#13

Ingen som vet eller har ni glömt bort tråden? :)

Peter SMedlem sedan dec. 20025 484 inlägg
#14

För mig resulterar följande

select sum(mid(flygtid,1,2))*3600 from flygtid

...med detta innehåll i 'flygtid'

flygtid
10:10:12
12:35:01
15:00:10
06:34:17
09:56:59

...i

187 200
joel_joel88Medlem sedan nov. 20021 049 inlägg
#15

så ska det ju inte vara. Jag vill summera flygtiden så att resultatet blir i det här formatat.

Ex. Altså 20 timmar och 40 min.
20:40

Peter SMedlem sedan dec. 20025 484 inlägg
#16

Med

select sum(mid(flygtid,1,2))*3600 + sum(mid(flygtid,4,2))*60 + sum(mid(flygtid,7,2)) as summa from flygtid

...får du ut den totala summeringen i sekunder. Det talet kan du sedan transfomera i ASP/VBScript till det format du vill ha.

Peter SMedlem sedan dec. 20025 484 inlägg
#17

Anledningen till att Lars kod gav ett felmeddelande är att det saknas en avslutande parentes efter '7,2))':

select sum(cint(mid(flygtid,1,2))*3600+cint(mid(flygtid,4,2))*60+cint(mid(flygtid,  7,2))) as summa from flygtid

Lite snyggare än mitt förslag :)

joel_joel88Medlem sedan nov. 20021 049 inlägg
#18

Ok, tack. Men det måste finnas någon smidig funktion för att få ut summan av tiden. Det måste ju vara rätt vanligt att man vill göra det. Om inte hur gör jag om det så jag får det här formatet, TT:MM.

Peter SMedlem sedan dec. 20025 484 inlägg
#19

Vi kan börja med att förenkla ytterligare. Mid() kan ersättas med Hour(), Minute() och Second():

select sum(hour(flygtid)*3600+minute(flygtid)*60+second(flygtid)) as summa from flygtid

Sedan:

a = cint(rs("summa"))

'timmar
h = round(a / 3600 - 0.5)

'minuter
m = round((a / 3600 - h) * 60 - 0.5)
joel_joel88Medlem sedan nov. 20021 049 inlägg
#20

Tackar nu fungerar det...nästan. Jag har nu totalt 1 timme och 20 minuter i databasen fast det skrivs ut som 1:19. Är det så att denna kod avrundar neråt och hur fixar jagså att det blir rätT?

Genererad på 392 ms · cache AV · v20260730165559-full.f96bc7eb