• Here is the original and another method.

    It works from 1743 to 9998

    Steve

     

    Declare @Year_Begin as int, @Year_End as int,

          @IndependeceDay as char(10), @DayofWeek as char(10)

    If exists (select * From dbo.sysobjects

        Where id = object_id(N'Independence'))

    Drop Table Independence

    Create Table Independence

    ( Four_of_July varchar(10),

      Day_of_Week varchar(10)) 

    Set @Year_Begin = 1753

    Set @Year_End = 9998

    While (@Year_Begin <= @Year_End)

     Begin

      If datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 1

           Set @DayofWeek = 'Sunday'  

      Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 2

           Set @DayofWeek = 'Monday'

       Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 3

           Set @DayofWeek = 'Tuesday'

       Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 4

           Set @DayofWeek = 'Wednesday'

       Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 5

           Set @DayofWeek = 'Thursday'

       Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 6

           Set @DayofWeek = 'Friday'

       Else if datepart(Dw,'07/04/'+ cast (@Year_Begin as char)) = 7

           Set @DayofWeek = 'Saturday'

       Set @IndependeceDay = '07/04/' + cast(@Year_Begin as char)

       Insert Into Independence(Four_of_July,Day_of_Week)

         Values (@IndependeceDay ,@DayofWeek) 

        Set @Year_Begin = @Year_Begin + 1

    End

    Select * From Independence

     

    Declare @Year_Begin_DT as datetime, @Year_End_DT as datetime

    If exists (select * From dbo.sysobjects

        Where id = object_id(N'Independence'))

    Drop Table Independence

    Create Table Independence

    ( Four_of_July DateTime,

      Day_of_Week varchar(10)) 

    Set @Year_Begin_DT = '7/4/1753'

    Set @Year_End_DT = '7/4/9998'

    PRINT @Year_Begin_DT

    While (@Year_Begin_DT <= @Year_End_DT)

     Begin

      Set @DayofWeek = CASE  DATEPART(weekday, @Year_Begin_DT)

         WHEN 1 THEN 'Sunday'

         WHEN 2 THEN 'Monday'

         WHEN 3 THEN 'Tuesday'

         WHEN 4 THEN 'Wednesday'

         WHEN 5 THEN 'Thursday'

         WHEN 6 THEN 'Friday'

         WHEN 7 THEN 'Saturday'

        END

      PRINT @Year_Begin_DT

      PRINT @DayofWeek

         Insert Into Independence(Four_of_July,Day_of_Week)

       Values (@Year_Begin_DT,@DayofWeek) 

      Set @Year_Begin_DT = DATEADD(year, 1, @Year_Begin_DT)

     End

    Select * From Independence