• oki, I have almost figured it our, I have a table with a columns date, so here is what I did (I am not a 100% about the weeks in a quarter)

    with firstdayoff
    as
    (
    select
    [date],
    FirstDayOfMonth  = FirstOfMonth,
    LastDayOfMonth  = MAX([date]) OVER (PARTITION BY [year], [month]),
    FirstDayOfQuarter = MIN([date]) OVER (PARTITION BY [year], [quarter]),
    LastDayOfQuarter  = MAX([date]) OVER (PARTITION BY [year], [quarter]),
    FirstDayOfYear  = FirstOfYear,
    LastDayOfYear   = MAX([date]) OVER (PARTITION BY [year]),
    FirstDayOfNextMonth = DATEADD(MONTH, 1, FirstOfMonth),
    FirstDayOfNextYear = DATEADD(YEAR, 1, FirstOfYear)
    from #dim
    )
    select
    dd.[Date],
    datediff(day, ff.FirstDayOfMonth, dateadd(month, 0, dateadd(dd,1,ff.LastDayOfMonth))) as [DaysinMonth],
    datediff(day, ff.FirstDayOfQuarter, dateadd(QUARTER, 0, dateadd(dd,1,ff.LastDayOfQuarter))) [DaysinQuarter],
    datediff(day, ff.FirstDayOfYear, dateadd(year, 0, dateadd(dd,1,ff.LastDayOfYear))) [DaysinYear],
    datediff(WEEK, ff.FirstDayOfQuarter, dateadd(QUARTER, 0, dateadd(dd,1,ff.LastDayOfQuarter)))
    from #dim dd inner join firstdayoff ff on dd.[Date] = ff.[date]
    order by dd.[Date]