Toon posts:

[MS Query] datetime functie werkt niet?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoe kan ik in Ms Query een query maken dat uit een SQLserver database data haalt van de vorige werkdag en op maandag dus van vrijdag van 06:00 tot 06:00 de volgende dag :?

Naar aanleiding van een vorig topic heb ik gezocht naar datetime,maar daar had ik totaal niets aan :(

de fucntie today werkt ook niet en de functie now ook niet....
IK heb het nu als volgt: in "Criteria Field" staat Datetime
en bij Value heb ik nu ">= [enter start date] And <= [enter end date]"
dit werkt dus alleen als ik handmatig een datum invul.
Hoe krijg ik dit automatisch??

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Het probleem is nog iets ingewikkelder dan jij denkt... Wat bijvoorbeeld als je data opvraagt van 27 december? Of de dag na 2e paasdag?

Het makkelijkste is waarschijnlijk het aanmaken van een extra tabel waarin de data van alle werkdagen wordt opgeslagen. Hieruit kun je vervolgens simpel halen wat de vorige werkdag was (grootste kleiner dan de huidige dag)

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


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Kijk ook eens in de BooksOnline helpfiles die bij SQL Server zitten voor informatie over de T-SQL date functions mocht je deze nog nodig hebben.

Today's subliminal thought is:


Verwijderd

Kijk eens op http://groups.google.com/

zoek op "working day" sql of 'previous working day" sql

Als je geen rekening houdt met feestdagen is het in access bijvoorbeeld redelijk simpel:

zoiets geloof ik...

SELECT GebruikersLog.GebruikersNaam, GebruikersLog.Datum
FROM GebruikersLog
WHERE [GebruikersLog.Datum] = IIf (Date()=Weekday(2), DateAdd ('d',-3,Date()), IIf (Date()=Weekday(1), DateAdd ('d',-2,Date()), DateAdd ('d',-1,Date()) ));

lang leve de spagetti :*)

  • cameodski
  • Registratie: Augustus 2002
  • Laatst online: 06-11-2023
Dit is inderdaad een probleem wat in MSSQL enige tijd kost om het op te lossen.
Als eerste moet je bepalen over welke weekdag (ma, di enz) je het hebt via DATEPART (weekday, datumveld). LET OP: het nummer wat je terugkrijgt is afhankelijk van de taal van de connectie.
Vervolgens moet je als het maandag is DATEADD (day, -3, datumveld) en als het geen maandag is, moet je DATEADD (day, -1, datumveld) doen.

Mocht je ook nog rekening willen houden met feestdagen dan zul je dit in een loopje moeten plaatsen om te zorgen dat betreffende dag niet op een feestdag valt.
In MSSQL 2000 kun je in dat geval het beste een user defined function gebruiken.

Never underestimate the power of