Drop Table
Support Forum for database administrators and web based access to important newsgroups related to databasesIs 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.
Post Follow-up to this messageOn 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)
Post Follow-up to this messageOn 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')
Post Follow-up to this messageTo 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
Post Follow-up to this message
Show a Printable Version
Email This Page to Someone!
Receive updates to this thread