Toon posts:

Mysql Tijd verschil

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

Verwijderd

Topicstarter
Hallo,

Ben al een tijdje op zoek, maar ben een complete n00b wat betreft MySQL en kan niet iets vinden wat een direct antwoord geeft op mijn vraag, hoe simpel deze waarschijnlijk ook is:

Ik heb een database (urenregistratie) met een tabel (uren) en de velden ID, Starttijd, Eindttijd, Datum en Project. Eindtijd en starttijd zijn in TIME format.

Welke query moet ik gebruiken om het verschil in uren en minuten tussen eindtijd en starttijd te vinden? Ik ben zover als TIMEDIFF gekomen, maar hoe ik deze moet gebruiken is me een raadsel. Iemand die me hier mee kan helpen?

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 01:41

MueR

Admin Devschuur® & Discord

is niet lief

Uit de MySQL documentatie:
SQL:
1
2
3
4
5
SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
-- Returns: '-00:00:00.000001'

SELECT TIMEDIFF('1997-12-31 23:59:59.000001', '1997-12-30 01:01:01.000002');
-- Returns: '46:58:57.999999'

Wat TIMEDIFF doet:
Tijdverschil = Tijd1 - Tijd2.

Anyone who gets in between me and my morning coffee should be insecure.


Verwijderd

Topicstarter
Ok, maar de query SELECT TIMEDIFF( 'eindtijd', 'starttijd' ) ; geeft als resultaat: 00:00:00

De tabel ziet er als volgt uit:
id datum starttijd eindtijd project
1 2007-06-10 11:00:00 11:45:00 x

Moet ik in mijn query ook aangeven dat ik het verschil tussen eind- en starttijd wil berekenen in de rij met id 1?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Timediff wilt een tijd+datum hebben voor beide velden, dus je zult eerst die twee bij elkaar moeten doen alvorens je timediff kan uitvoeren.

Overigens raad ik je aan om DATETIME velden te gebruiken, want in het systeem wat je nu hebt kan je nooit werken rond middernacht.

[ Voor 32% gewijzigd door Erkens op 10-06-2007 12:55 ]


Verwijderd

Ok, maar de query SELECT TIMEDIFF( 'eindtijd', 'starttijd' ) ; geeft als resultaat: 00:00:00
Doordat jouw eindtijd en starttijd tussen quotes staat, word het als string gezien en zal het nooit het gewenste resultaat geven. Haal deze quotes weg, zodat de query kan zien dat je de kolom 'eindtijd' bedoeld:

code:
1
SELECT TIMEDIFF(eindtijd, starttijd);


Verder raad ik je aan om de 'datum' kolom weg te gooien en bij start- en eindtijd een DATETIME type te gebruiken zoals Erkens ook al heeft gezegt.

Verwijderd

Topicstarter
Super! Bedankt voor jullie hulp! Zal idd de datum kolom weggooien en van de TIME kolommen DATETIME maken.

Verwijderd

Topicstarter
Toch nog niet helemaal opgelost. Heb datum kolom verwijderd en TIME naar DATETIME omgezet.
Als ik de quotes weghaal, zoals HellCaster voorstelde, krijg ik een error (#1054 - Unknown column 'eindtijd' in 'field list' ). Laat ik de quotes staan, dan krijg ik geen error, maar is het resultaat een tijdsverschil van 00:00:00 .

De tabel ziet er nu zo uit:
id starttijd eindtijd project
1 2007-06-10 13:17:02 2007-06-10 13:45:16 x

Ik denk dat ik de eerste rij uit de tabel in mijn query moet selecteren? Dus hoe stel ik een query op die het verschil tussen starttijd en eindtijd berekend in de rij met id 1?

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op zondag 10 juni 2007 @ 13:23:
Toch nog niet helemaal opgelost. Heb datum kolom verwijderd en TIME naar DATETIME omgezet.
Als ik de quotes weghaal, zoals HellCaster voorstelde, krijg ik een error (#1054 - Unknown column 'eindtijd' in 'field list' ). Laat ik de quotes staan, dan krijg ik geen error, maar is het resultaat een tijdsverschil van 00:00:00 .
Selecteer je wel de juiste table als je die foutmelding krijgt? Wat is nu je query, en hoe ziet je table er nu uit?

Verwijderd

Topicstarter
mijn query is: SELECT TIMEDIFF(eindtijd, starttijd);
de tabel ziet er zo uit:

id---------------starttijd----------------------eindtijd----------------------project
1----------------2007-06-10 13:17:02---2007-06-10 13:45:16---x

Maar volgens mij mist er dus in mn query het selecteren van de tabel 'uren' en het selecteren van een rij met informatie. (sorry, ben echt heel er n00b wat dit betreft.

[ Voor 26% gewijzigd door Verwijderd op 10-06-2007 14:28 ]


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:17

lier

MikroTik nerd

SELECT [veld1], [v2ld2], ...
FROM [tabelnaam]

(optioneel)
WHERE [voorwaarde]

Dus:
SELECT TIMEDIFF(eindtijd, starttijd) FROM Uren (als dat de tabelnaam is)

Eerst het probleem, dan de oplossing


Verwijderd

Topicstarter
Thanks allemaal! Het is me indmiddels gelukt met de twee laatste reacties! Bedankt voor de hulp!

  • XangadiX
  • Registratie: Oktober 2000
  • Laatst online: 26-05 15:01

XangadiX

trepanatie is zóó kinderachtig

WEB >> PRG

Stoer; Marduq

Pagina: 1