DateTime, Time only.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
SELECT ADM_Kloksysteem.ID, ADM_Klokpersoneel.Personeel_ID, ADM_Klokpersoneel.Naam, ADM_Klokpersoneel.Achternaam, ADM_Kloksysteem.Begintijd, ADM_Kloksysteem.Eindtijd, ADM_Kloksysteem.Klokbegintijd, ADM_Kloksysteem.Klokeindtijd, (ADM_Kloksysteem.Klokeindtijd - ADM_Kloksysteem.Klokbegintijd) AS 'Gewerkte uren' FROM ADM_Kloksysteem INNER JOIN ADM_Klokpersoneel ON ADM_Kloksysteem.Personeel_ID = ADM_Klokpersoneel.ID ORDER BY ADM_Kloksysteem.Begintijd DESC

Voor een project op school ben ik bezig. Wat er hier gebeurd is dat het vetgedrukte gedeelte, de uitkomst daarvan wordt weergegeven in een datagridview als "Gewerkte uren".

Nu is het de bedoeling dat ik alleen het tijdformaat krijg van de gewerkte uren. Het probleem zit hem echter in het feit dat ik Klokbegintijd min Klokeindtijd doe. en daarom krijg ik de Convert(varchar,getdate(),8) niet aan de praat. Kan iemand hiermee helpen?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Gebruik de date/time data types én bijbehorende functies.

{signature}


Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
Zou je dat een keer kunnen aanpassen aan de hand van de query wat er staat? het probleem is dat ik nou juist de goede datatypes met het date/time format niet goed samengevoegd krijgt.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

ThaDiggah schreef op maandag 14 februari 2011 @ 13:53:
Zou je dat een keer kunnen aanpassen aan de hand van de query wat er staat? het probleem is dat ik nou juist de goede datatypes met het date/time format niet goed samengevoegd krijgt.
Wat had je zelf al geprobeerd dan?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Nu online
TS geeft niet zoveel info (en [code=sql] met wat formatting mag ook wel), maar types en functies lijken niet direct fout (googelen doet mij vermoeden dat dit MS SQL server-spul is, waarmee ik verder overigens geen ervaring heb).

Probleem is het gebruik van getdate (huidige datum/tijd) terwijl er iets gedaan moet worden met een in de db opgeslagen datetime, dus je moet gewoon zelf de juiste parameters aan die functie voeren ipv iets van internet (of schoolboek) te copy/pasten en te verwachten dat het vanzelf voor jouw situatie werkt.

Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
CONVERT(DateTime, getdate(), 108), (ADM_Kloksysteem.Klokeindtijd - ADM_Kloksysteem.Klokbegintijd) AS 'Gewerkte uren' FROM ADM_Kloksysteem

Maar dit werkt tot op zekere hoogte, ik krijg een raar resultaat terug(14-2-2011 14:03 als result) van een tijd wat niet de begintijd is noch de eindtijd. Maar hij geeft wel een resultaat. Als ik van de DateTime varchar maakt geeft hij ook een vreemd resultaat. Feitelijk hoeft ik alleen

11-2-2011 17:00:00 minus 11-2-2011 9:00:00 = 8:00 'gewerkte uren'

Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
Raynman schreef op maandag 14 februari 2011 @ 14:01:
TS geeft niet zoveel info (en [code=sql] met wat formatting mag ook wel), maar types en functies lijken niet direct fout (googelen doet mij vermoeden dat dit MS SQL server-spul is, waarmee ik verder overigens geen ervaring heb).

Probleem is het gebruik van getdate (huidige datum/tijd) terwijl er iets gedaan moet worden met een in de db opgeslagen datetime, dus je moet gewoon zelf de juiste parameters aan die functie voeren ipv iets van internet (of schoolboek) te copy/pasten en te verwachten dat het vanzelf voor jouw situatie werkt.
Das het probleem een beetje. Volgens het boekje werkt het niet want dan krijg ik niet het gewenste resultaat terug. Vandaar dat ik hulp vraag, ben er 2 dagen mee aan het knoeien en kom er gewoon niet uit. Heb al verschillende dingen geprobeert.

Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 17-09 10:39

Cloud

FP ProMod

Ex-moderatie mobster

Het zou handig zijn als je dan op z'n minst verteld met welke database je werkt. Het vermoeden is MSSQL, maar is dat ook zo? En zo ja welke versie? :)

Wat jij overigens vraagt van het systeem is géén DateTime maar een TimeSpan. En dat wordt door MSSQL in elk geval niet ondersteund. Hier is misschien een link die handig is voor je: http://www.sqlteam.com/ar...d-durations-in-sql-server. Een functie die je nodig gaat hebben is waarschijnlijk DATEDIFF(). Als het om MSSQL gaat dus.

[ Voor 4% gewijzigd door Cloud op 14-02-2011 14:19 ]

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
Het is gelukt! thanks for the reply's

Acties:
  • 0 Henk 'm!

  • Cloud
  • Registratie: November 2001
  • Laatst online: 17-09 10:39

Cloud

FP ProMod

Ex-moderatie mobster

Dat is heel fijn voor je, maar zou je ook willen vertellen hoe het nu gelukt is dan? Dan heeft een ander (en hebben wij!) ook nog wat aan dit topic ;)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 10-09 14:45
Kleine tip, al zijn vast veel developers het niet met me eens: ik gebruik altijd int's met een unix_timestamp voor datum/tijd notaties, dat vind ik persoonlijk veel prettiger rekenen :)

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Noxious schreef op maandag 14 februari 2011 @ 15:26:
Kleine tip, al zijn vast veel developers het niet met me eens: ik gebruik altijd int's met een unix_timestamp voor datum/tijd notaties, dat vind ik persoonlijk veel prettiger rekenen :)
Je hebt gelijk de meeste developers zullen het niet met je eens zijn, helemaal omdat MSSQL geen ondersteuning heeft voor Unix Timestamps.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Noxious
  • Registratie: Juli 2002
  • Laatst online: 10-09 14:45
LuCarD schreef op maandag 14 februari 2011 @ 15:35:
[...]


Je hebt gelijk de meeste developers zullen het niet met je eens zijn, helemaal omdat MSSQL geen ondersteuning heeft voor Unix Timestamps.
Tsja, ik lees nergens in de posts van TS dat 'ie MSSQL gebruikt ;)

Acties:
  • 0 Henk 'm!

  • Killemov
  • Registratie: Januari 2000
  • Laatst online: 24-08 23:40

Killemov

Ik zoek nog een mooi icooi =)

TimeSpan?!?!

INTERVAL is dus het standaard datatype om het verschil tussen twee absolute tijden weer te geven.

Hey ... maar dan heb je ook wat!


Acties:
  • 0 Henk 'm!

  • Diggie9
  • Registratie: Maart 2002
  • Laatst online: 23-07 14:19
De oplossing is de tijd converten. zie hieronder:

//Select Statement
SELECT ADM_Kloksysteem.ID AS '#', ADM_Klokpersoneel.Personeel_ID AS 'Personeelsnummer', ADM_Klokpersoneel.Naam AS 'Voornaam', ADM_Klokpersoneel.Tussenvoegsel, ADM_Klokpersoneel.Achternaam, ADM_Kloksysteem.Begintijd, ADM_Kloksysteem.Eindtijd,

// Select statement met time conversion
CONVERT(VARCHAR(8),ADM_Kloksysteem.Klokbegintijd,108) AS 'Klokbegintijd',
CONVERT(VARCHAR(8),ADM_Kloksysteem.Klokeindtijd,108) AS 'Klokeindtijd', (Klokeindtijd - Klokbegintijd) AS 'Gewerkte uren'


FROM ADM_Kloksysteem

INNER JOIN ADM_Klokpersoneel ON ADM_Kloksysteem.Personeel_ID = ADM_Klokpersoneel.ID

WHERE ADM_Kloksysteem.Begintijd >= '" + dt_vanaf.Value.Date.AddDays(0).ToString("MM'/'dd'/'yyyy HH:mm:ss") + "' AND ADM_Kloksysteem.Begintijd <= '" + dt_tot.Value.Date.AddDays(1).ToString("MM'/'dd'/'yyyy HH:mm:ss") + "' ORDER BY ADM_Kloksysteem.Begintijd DESC");
Pagina: 1