Tilføje alle hverdage for måned til tabel
Hej Alle sammen,Jeg har nu siddet i noget tid, for forsøgt mig med og finde en måde, hvorpå jeg kan tilføje en record til en tabel, indeholdende datoen for alle hverdage i en måned.
Jeg har i skrivende stund følgende:
ALTER function [dbo].[generateDateTable]
(
-- Add the parameters for the function here
@start_date datetime
, @end_date datetime
, @datepart varchar(20) = 'day'
, @step int = 1
)
returns table
as
return (
with getdates (dateoer)
as (
select
@start_date as date
union all
select
case
when @datepart in ('year', 'yy', 'yyyy') then dateadd(yy, @step, dateoer)
when @datepart in ('quarter', 'qq', 'q') then dateadd(qq, @step, dateoer)
when @datepart in ('month', 'mm', 'm') then dateadd(mm, @step, dateoer)
when @datepart in ('dayofyear', 'dy', 'y') then dateadd(dy, @step, dateoer)
when @datepart in ('day', 'dd', 'd') then dateadd(dd, @step, dateoer)
when @datepart in ('week', 'wk', 'ww') then dateadd(ww, @step, dateoer)
when @datepart in ('hour', 'hh') then dateadd(hh, @step, dateoer)
when @datepart in ('minute', 'mi', 'n') then dateadd(n, @step, dateoer)
when @datepart in ('second', 'ss', 's') then dateadd(s, @step, dateoer)
when @datepart in ('millisecond', 'ms') then dateadd(ms, @step, dateoer)
else dateadd(dd, @step, dateoer)
end as date
from
getdates
where
(case
when @datepart in ('year', 'yy', 'yyyy') then dateadd(yy, @step, dateoer)
when @datepart in ('quarter', 'qq', 'q') then dateadd(qq, @step, dateoer)
when @datepart in ('month', 'mm', 'm') then dateadd(mm, @step, dateoer)
when @datepart in ('dayofyear', 'dy', 'y') then dateadd(dy, @step, dateoer)
when @datepart in ('day', 'dd', 'd') then dateadd(dd, @step, dateoer)
when @datepart in ('week', 'wk', 'ww') then dateadd(ww, @step, dateoer)
when @datepart in ('hour', 'hh') then dateadd(hh, @step, dateoer)
when @datepart in ('minute', 'mi', 'n') then dateadd(n, @step, dateoer)
when @datepart in ('second', 'ss', 's') then dateadd(s, @step, dateoer)
when @datepart in ('millisecond', 'ms') then dateadd(ms, @step, dateoer)
else dateadd(dd, @step, dateoer)
end) <= @end_date
)
select
dateoer
from
getdates
)
Ovenstående virker nu også ganske fortrindeligt, med den undtagelse at den tilføjer ALLE datoer. Altså også for de lørdage og søndage, der måtte være indenfor de datoer jeg angiver.
Har forsøgt mig med og tjekke på dagene, hvorvidt der er tale om en lørdag eller søndag, men desværre uden held.
Der skulle vel ikke være en venlig sjæl der kan gennemskue hvordan jeg kan gribe det an ?
Skulle der være nogen spørgsmål, svarer jeg gerne på dem.
Mvh
Torben