MySQL - Som van alle TIMEDIFF()'s in tabel

Pagina: 1
Acties:

  • DPLuS
  • Registratie: April 2000
  • Niet online
Ik heb een tabel met 2 datetime-velden: starttijd en eindtijd.
Nu wil ik met een query de totale som van alle TIMEDIFF(eindtijd, starttijd) ophalen, maar kan ik dit met een simpele SQL-query voorelkaar krijgen?

M.a.w.:
code:
1
2
3
4
5
Projectnaam     starttijd       eindtijd    TIMEDIFF(eindtijd, starttijd)
Project1            12:00:00        13:00:00    01:00:00
Project2            09:00:00        12:00:00    03:00:00
----------------------------------------------------------
CUMULATIEF:                                 04:00:00 <--- Deze waarde wil ik dus berekenen!

[ Voor 46% gewijzigd door DPLuS op 02-07-2007 11:23 ]


  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Je kan misschien gewoon een normale query gebruiken en deze fetchen als een array en dan simpelweg alles optellen...

  • DPLuS
  • Registratie: April 2000
  • Niet online
Maar het moet in SQL zelf, ik maak hier geen gebruik van PHP of andere scriptingtaal...

  • P_de_B
  • Registratie: Juli 2003
  • Niet online
SELECT SUM(TIMEDIFF(eind, start)) as Totaal
FROM Tabel

Of begrijp ik je nu verkeerd?

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:20

Janoz

Moderator Devschuur®

!litemod

Het kan wel (zoals P_de_B aangeeft) maar dat is alleen de daadwerkelijke uitkomst. Een resultaat zoals jij boven vormgegeven hebt is niet mogelijk in SQL. Hiervoor zul je wat extra's moeten gebruiken

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


  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
quick and dirty :

SELECT Projectnaam, starttijd, eindtijd, TIMEDIFF(eindtijd, starttijd) FROM Table1
union
SELECT REPLICATE('-', COL_LENGTH(ProjectNaam)),
REPLICATE('-', COL_LENGTH(starttijd)),
REPLICATE('-', COL_LENGTH(eindtijd)),
REPLICATE('-', COL_LENGTH(eindtijd)) from TABLE1
union
SELECT 'CUMULATIEF:', null, null, cast(sum(cast(TIMEDIFF(eindtijd, starttijd) as float)) as datetime) FROM Table1


p.s. ik ken zelf alleen mssql, dus kan het zijn dat quotes en funtienamen vertaalt moeten worden.

[ Voor 45% gewijzigd door Fiander op 02-07-2007 11:43 . Reden: de minetjes vergeten. ]

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


  • DPLuS
  • Registratie: April 2000
  • Niet online
Die SUM functie van P_de_B levert ook niet de juiste uitkomst: hij wordt gecast naar een integer en rondt dan het getal af, dus 4 uur en 3 kwartier wordt: 4.

[ Voor 26% gewijzigd door DPLuS op 02-07-2007 11:32 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 30-11 19:29

momania

iPhone 30! Bam!

DPLuS schreef op maandag 02 juli 2007 @ 11:29:
Die SUM functie van P_de_B levert ook niet de juiste uitkomst: hij wordt gecast naar een integer en rondt dan het getal af, dus 4 uur en 3 kwartier wordt: 4.
SQL:
1
2
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(TIMEDIFF(eind, start)))) as Totaal
FROM Tabel


Voor jou misschien ook interessant om door de lezen: MySQL Date and Time functions

Neem je whisky mee, is het te weinig... *zucht*


  • DPLuS
  • Registratie: April 2000
  • Niet online
That did the trick, thanks....
Pagina: 1