Avatar billede neocron Nybegynder
29. august 2007 - 22:02 Der er 8 kommentarer og
1 løsning

Tidsberegning ud fra 2x DATETIME

Hej,

Jeg har gang i en masse sager for tiden og ligeså meget for at prøve grænser. Og nu har jeg fundet en. Jeg er ikke lige 110% på hvordan jeg skal gribe den an.

Jeg har 2x DATETIME (start og slut hedder felterne).
Lad os antage følgende:

start = 2007-08-29 21:30:00
slut = 2007-08-30 21:30:00

Her ser vi at slutdatoen i dette tilfælde er 24 timer frem i tiden. Mit spørgsmål er så - hvordan ville I sammensætte en query som finder og returnerer den tid der er forløbet i tidsrummet fra start til slut?

Og som noget andet - vil det blive returneret i sekunder eller minutter eller?
Avatar billede erikjacobsen Ekspert
29. august 2007 - 22:06 #1
Avatar billede neocron Nybegynder
30. august 2007 - 21:27 #2
Tak :) Det var det der skulle til. Hvis jeg må have lov at stille et tillægsspørgsmål.
Jeg har nemlig et ønske om noget beregning, så at sige.

START (DATETIME)
SLUT (DATETIME)
FORBRUGT_TID (TIME)

START er angivet til at starte med. Jeg har så valgt at have en "Luk".
Når man trykker på "Luk" vil SLUT blive udfyldt og NEDETID bliver f.eks. udfyldt med hjælp fra følgende query:

SELECT TIMEDIFF(start, slut) FROM minTabel WHERE id = 1

NEDETID bliver eksempelvis "-02:24:15" hvis der er forløbet ~2,5 time. (Hvorfor negativtegn? Kan det fjernes via SQL eller skal det efterbehandles i PHP?).

Nu har jeg så naturligvis flere rækker som hver især får en NEDETID.
Spørgsmålet er så - hvordan lægger jeg dem sammen? SUM var et forsøg værd, men det er vist mindre effektivt. Her ses resultat med SUM:

NEDETID række 1 = -02:24:15
NEDETID række 2 = -21:02:56
SUM resultat: 33321761
Avatar billede neocron Nybegynder
30. august 2007 - 21:27 #3
Det skal lige siges at FORBRUGT_TID og NEDETID er det samme. Det er bare mig der koger lidt i det :)
Avatar billede liit42 Nybegynder
31. august 2007 - 22:04 #4
Det er nemt klaret - TIMEDIFF(slut,start), så passer pengene :-)
Avatar billede neocron Nybegynder
01. september 2007 - 00:24 #5
Det må straks prøves :)
Avatar billede neocron Nybegynder
01. september 2007 - 00:44 #6
Haha ja tænk sig at fortegnet var så simpelt at fjerne :)
Tør jeg spørge om du har et forslag til hvordan man bedst kan regne summen ud på rækkerne FORBRUGT_TID?

FORBRUGT_TID er af typen TIME og (nu) med data som:

01:06:31
02:26:43
osv

Nu kan man få et mere fornuftigt resultat med SUM, men jeg ville dog gerne have det i "tt:mm:ss" istedet for bare en streng "ttmmss". Er det muligt, eller skal jeg hellere satse på at gøre det mere læsbart med PHP?
Avatar billede neocron Nybegynder
01. september 2007 - 01:45 #7
Det skal siges at jeg havde kig på ADDTIME() som lægger 2 tidspunkter sammen, men den skal tage en hel kolonne ligesom SUM(kolonne).

Lige nu bruger jeg SUM og det passer mig skidt :)
Her er mine eksempler med SUM:

  01:06:31
+ 02:24:15
+ 02:02:56
= 53302

(ret ulæseligt, ikke, hvis man ikke ved hvad det skal betyde?)
Avatar billede neocron Nybegynder
01. september 2007 - 03:08 #8
Aha!
SELECT TIME_FORMAT(SUM(forbrugt_tid), '%T')... osv :)

liit42, vil du være sød at smide et svar?
Jeg ville have delt dem ligeligt mellem jer, men jeg ved at erik ikke samler på point. Skulle han have skiftet mening må han dog endelig også smide et svar :o)
Avatar billede liit42 Nybegynder
01. september 2007 - 11:52 #9
så gerne :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester