[SQL]Sommatie van tijdsduur

Pagina: 1
Acties:
  • 101 views sinds 30-01-2008
  • Reageer

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
Korte vraag: ik heb een tabel met gesprekken met 1 veld 'duur' Nu wil ik weten hoeveel er gebeld is in een bepaalde periode. Het veld duur is van het type datum/tijd

SELECT SUM(registraties.duur) werkt niet, ik zie bv 0.53234872 ipv 01:23:55 (hh:mm:ss)

kan iemand mij een tip geven.

Heb al ge-F1-t, Gegoogled etc.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Een sum is een wiskundige bewerking, het resultaat is een getal.
Waarschijnlijk moet je dit nog converteren naar een tijd.

Wat voor database gebruik je?

Who is John Galt?


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
database is Access 2K en wordt (misschien) MySQL maar in eerste instantie Access.
ga effe proberen...

wil niet echt lukken, krijg meldingen over aantal argumenten, maar TIME(SUM(DUUR)) moet toch goed zijn, of zie ik iets over het hoofd ?

[ Voor 41% gewijzigd door pkouwer op 02-07-2003 08:49 ]


  • Batsies
  • Registratie: Mei 2002
  • Laatst online: 27-01-2022

Batsies

E-Developing

Via de search staat er veel over te vinden naar mijn mening:

http://search.gathering.t...5D=&data%5Bsearch%5D=Zoek

E-Developing


  • mkleinman
  • Registratie: Oktober 2001
  • Laatst online: 17-08 22:48

mkleinman

8kWp, WPB, ELGA 6

Simpel,, je SUM levert een tijd op als nummerfractie dit is in principe ook een tijd.. Namelijk de tijd in dagen!.

Dus het is ff afhankelijk wat je wilt (uren/dagen/minuten/seconden).. Je kan het in principe zo terugrekenen.

Duurzame nerd. Veel comfort en weinig verbruiken. Zuinig aan doen voor de toekomst.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Daarnaast vind ik persoonlijk het datatype "date" niet echt geschikt om een tijdsduur op te slaan. Dit type is bedoeld om een bepaald moment op te slaan. Wat jij wilt is de tijd tussen deze twee momenten.

Liever zou ik een start en eind tijd opslaan, of gewoon de tijdsduur in secondes (oid) in een integer veld.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
is krijg de gespreksduur aangeleverd uit de centrale dus niet zoveel keus. datediff met '00:00:00' is een optie

  • pkouwer
  • Registratie: November 2001
  • Laatst online: 07-10-2025
Batsies schreef op 02 July 2003 @ 08:49:
Via de search staat er veel over te vinden naar mijn mening:

http://search.gathering.t...5D=&data%5Bsearch%5D=Zoek
kan ik op zich niet zo heel veel mee, zijn allemaal datediffs...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 23-08 10:39

Janoz

Moderator Devschuur®

!litemod

Voor data (als meervoud van datum) bestaat in principe ook helemaal geen optelfunctie. Je kunt 2 momenten niet bij elkaar optellen. De enige operaties die je op 2 data kunt doen is het verschil ophalen. iets bij een datum optellen kan alleen een tijdsduur zijn (aantal dagen oid) vandaar dat je geen optelfunctie voor meerdere data kunt vinden.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • jochemd
  • Registratie: November 2000
  • Laatst online: 08-08 15:51
pkouwer schreef op 02 July 2003 @ 08:24:
database is Access 2K en wordt (misschien) MySQL maar in eerste instantie Access.
ga effe proberen...
Als je slim bent ga je niet upgraden naar MySQL maar naar een database die het datatype INTERVAL ondersteunt. Vervolgens kan je gewoon normale algebra gebruiken op dat veld zonder moeilijk te hoeven doen met conversies. In PostgreSQL bijvoorbeeld werkt het als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
testdb=> CREATE TABLE test (duur INTERVAL);
CREATE TABLE
testdb=> INSERT INTO test VALUES ('00:03:34');
INSERT 4445339 1
testdb=> INSERT INTO test VALUES ('00:02:15');
INSERT 4445340 1
testdb=> INSERT INTO test VALUES ('00:17:28');
INSERT 4445341 1
testdb=> SELECT SUM(duur) FROM test;
 00:23:17
testdb=> SELECT AVG(duur) FROM test;
 00:07:45.666667

  • zoepercavia
  • Registratie: September 2001
  • Laatst online: 26-12-2025
Waarom naar zo een database terwijl een timespan/interval/tijdsduur gewoon een x aantal (milli)seconden is. In de meeste talen kan je zonder veel moeite van een getal naar een datum. Iets minder makkelijk, maar scheelt wel weer een tijdkostende overstap.

Panacea.NL als je geinteresserd bent in IT en Geneeskunde!

Pagina: 1