Home > Archive > Microsoft SQL Server forum > August 2005 > Way to create table of months?









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Way to create table of months?
manning_news@hotmail.com

2005-08-23, 11:24 am

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,....December.

Thanks.

Ross Presser

2005-08-23, 8:24 pm

On 23 Aug 2005 09:09:51 -0700, manning_news@hotmail
.com wrote:

> 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,....December.
>
> Thanks.


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

select * from dbo. MonthList('July','De
cember')
Select * from dbo. MonthList('December)
','July'

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)
Ross Presser

2005-08-23, 8:24 pm

On 23 Aug 2005 09:09:51 -0700, manning_news@hotmail
.com wrote:

> 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,....December.
>
> Thanks.


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(datetime,@be
gmonth + ' 1,2000')
set @date2 = convert(datetime,@en
dMonth + ' 1,2000')
IF datediff(month,@date
1,@date2) < 0
set @date2 = dateadd(year,1,@date
2)

INSERT @MonthList (Num, MonthName)
SELECT num, datename(month,datea
dd(month,num,@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,num,@d
ate1) <= @date2
return
END

GO

SELECT * from dbo. MonthList('July','De
cember')
SELECT * from dbo. MonthList('December'
,'July')
Simon Hayes

2005-08-24, 3:24 am

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

http://www.aspfaq.com/show.asp?id=2519

Simon

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com