Avatar billede dm00706 Nybegynder
05. december 2003 - 12:35 Der er 9 kommentarer og
2 løsninger

last business day of the month

Hej alle eksperter

Jeg ville høre om der var nogle der havde en løsning på hvordan man finder den sidste hverdag i en måned???
Kan godt finde den sidste dato i den pågældende måned, men har brug for den sidste hverdag....
Avatar billede terry Ekspert
05. december 2003 - 13:56 #1
thats not so easy as you also need to take into account holidays etc.!
One method is to have them in a table!
Avatar billede trer Nybegynder
05. december 2003 - 14:06 #2
Nemmeste måde at finde de skæve helligdage på er, ved at gå ud fra Påske.

Pinse er altid 50 dage efter påske. Store Bededag er 4 fredag efter påske.  Påske er første søndag efter første fuldmåne efter forårsjævndøgn - Så du lægger blot påskedag ind i tabellen.

Du kan bruge funktionen DATENAME() til at få leveret dagen udfra en dato. Ved at tage sidste dag i en måned og loope bagud mens du checker for skæve helligdage, så kan du finde sidste arbejdsdag.
Avatar billede terry Ekspert
05. december 2003 - 14:13 #3
trer>do you have a routine to find Easter (påske) ?
Avatar billede trer Nybegynder
05. december 2003 - 14:21 #4
Well, Easter is first Sunday after first full moon after spring equinox...  Calculating the full moon is a bit to hairy, I normally just store easter for the next ten years or so in a table.

The other "movable holidays" I then calculate using easter as a base.
Avatar billede terry Ekspert
05. december 2003 - 14:24 #5
No it isnt easy to calculate, and having it in a table is a simple solution. I actually do have a routine in VB, but I'm keeping that to myself :o)
Avatar billede trer Nybegynder
05. december 2003 - 14:30 #6
Is it the full routine, using a certain year as a base, and calculating forward from that, or do you have a shortcut?

Implementing the full calculation, especially in T-SQL, have always seems to much bother...
Avatar billede terry Ekspert
05. december 2003 - 14:43 #7
Its the full routine.
Calculation method by mathematician Johann Carl Friedrich Gauss
I actually find it on the web some years back.
Avatar billede trer Nybegynder
05. december 2003 - 15:11 #8
heh... I just searched the net, found an algorithm of C.F. Gauá, it is a lot simpler than others I have seen, but limited to the years 1583 to 2299 (actually in sql server the limits will be 1750 to 2250)

Check: http://www.punctum.com/interest/caltime/calend.de.html

Took only a few minutes to rewrite the C procedure to a T-SQL function - and it seems to work...
Avatar billede terry Ekspert
05. december 2003 - 15:26 #9
I think we can manage with 1583 to 2299 (1750 - 2250) dont you :o)

Its years since I played around with C, so I'll keep to my VB, which should also be easy enough to convert to T-SQL if I ever need to!

Link has a couple of other date routines too.
Avatar billede trer Nybegynder
05. december 2003 - 15:33 #10
I dapple a bit in generalogy, so it is a rather annoying having those limits. Actually, off hand it seems like the routine does not handle the days removed from the calender in the 1750'ies.

The other routines / algoritms seems interesting as well - i noticed that...

Okay, we have come a bit off topic here - nice "talking" to you, Terry :-)
Avatar billede dm00706 Nybegynder
21. januar 2004 - 12:37 #11
Det Hjalp mig ikke helt, men gav mig nogle ideer.... Tak for hjælpen :o)
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