Way to create table of months?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • manning_news@hotmail.com

    Way to create table of months?

    Is there an way to create a table of months using SQL functions? If
    "July" is entered for the beginning month, and "December" is entered
    for the ending month, then I'd like to create a table with 6 rows, one
    for July, August,....Dece mber.

    Thanks.

  • Ross Presser

    #2
    Re: Way to create table of months?

    On 23 Aug 2005 09:09:51 -0700, manning_news@ho tmail.com wrote:
    [color=blue]
    > Is there an way to create a table of months using SQL functions? If
    > "July" is entered for the beginning month, and "December" is entered
    > for the ending month, then I'd like to create a table with 6 rows, one
    > for July, August,....Dece mber.
    >
    > Thanks.[/color]

    Whups, forgot to post the output from those two selects at the bottom.

    select * from dbo.MonthList(' July','December ')
    Select * from dbo.MonthList(' December)','Jul y'

    Num MonthName
    ----------- ---------------
    0 July
    1 August
    2 September
    3 October
    4 November
    5 December

    (6 row(s) affected)

    Num MonthName
    ----------- ---------------
    0 December
    1 January
    2 February
    3 March
    4 April
    5 May
    6 June
    7 July

    (8 row(s) affected)

    Comment

    • Ross Presser

      #3
      Re: Way to create table of months?

      On 23 Aug 2005 09:09:51 -0700, manning_news@ho tmail.com wrote:
      [color=blue]
      > Is there an way to create a table of months using SQL functions? If
      > "July" is entered for the beginning month, and "December" is entered
      > for the ending month, then I'd like to create a table with 6 rows, one
      > for July, August,....Dece mber.
      >
      > Thanks.[/color]

      create function dbo.MonthList
      ( @begMonth varchar(15),
      @endMonth varchar(15)
      ) RETURNS @MonthList TABLE
      ( Num int, MonthName varchar(15) )
      AS
      BEGIN

      declare @date1 datetime
      declare @date2 datetime
      set @date1 = convert(datetim e,@begmonth + ' 1,2000')
      set @date2 = convert(datetim e,@endMonth + ' 1,2000')
      IF datediff(month, @date1,@date2) < 0
      set @date2 = dateadd(year,1, @date2)

      INSERT @MonthList (Num, MonthName)
      SELECT num, datename(month, dateadd(month,n um,@date1)) AS MonthName
      FROM (
      select 0 AS num union all select 1 union all select 2 union all
      select 3 union all select 4 union all select 5 union all select 6
      union all select 7 union all select 8 union all select 9 union all
      select 10 union all select 11
      ) AS nums
      WHERE dateadd(month,n um,@date1) <= @date2
      return
      END

      GO

      SELECT * from dbo.MonthList(' July','December ')
      SELECT * from dbo.MonthList(' December','July ')

      Comment

      • Simon Hayes

        #4
        Re: Way to create table of months?

        To add to Ross's comments, if you have to work with dates then you
        might consider a complete calendar table:



        Simon

        Comment

        Working...