2010-03-17 147 views
0

我有一個包含2000年至2012年數據的日​​歷表(2012年不是故意的!)。我只是意識到我沒有一個月的週數(例如,在一月的1,2,3,4二月1,2,3,4)日曆表 - 星期數

我該如何計算一個月內的星期數填補這張桌子?

下面是表架構

CREATE TABLE [TCalendar] (
    [TimeKey] [int] NOT NULL , 
    [FullDateAlternateKey] [datetime] NOT NULL , 
    [HolidayKey] [tinyint] NULL , 
    [IsWeekDay] [tinyint] NULL , 
    [DayNumberOfWeek] [tinyint] NULL , 
    [EnglishDayNameOfWeek] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [SpanishDayNameOfWeek] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [FrenchDayNameOfWeek] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [DayNumberOfMonth] [tinyint] NULL , 
    [DayNumberOfYear] [smallint] NULL , 
    [WeekNumberOfYear] [tinyint] NULL , 
    [EnglishMonthName] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [SpanishMonthName] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [FrenchMonthName] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [MonthNumberOfYear] [tinyint] NULL , 
    [CalendarQuarter] [tinyint] NULL , 
    [CalendarYear] [char] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [CalendarSemester] [tinyint] NULL , 
    [FiscalQuarter] [tinyint] NULL , 
    [FiscalYear] [char] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , 
    [FiscalSemester] [tinyint] NULL , 
    [IsLastDayInMonth] [tinyint] NULL , 
    CONSTRAINT [PK_TCalendar] PRIMARY KEY CLUSTERED 
    (
     [TimeKey] 
    ) ON [PRIMARY] 
) ON [PRIMARY] 
GO 

回答

1
update TCalendar 
set = WeekNumberOfMonth = DATEDIFF(week, DATEADD(MONTH, DATEDIFF(MONTH, 0, FullDateAlternateKey), 0), FullDateAlternateKey) +1