Get Days In Month

Hi,

Below Store procedure gives days for inputed year & month & day no.


CREATE PROCEDURE dbo.GetdaysInMonth

(

-- Add the parameters for the function here

@year varchar(20), ' Any year

@month varchar(20), ' Between 1 to 12

@DayNo as int ' 1 (Sun), 2 (Mon), 3 (Tue),4 (Wed), 5 (Thu), 6(Fri), 7(Sat)

)AS

declare @day1 varchar(20)

set @day1=1

declare @DtFrom datetime

declare @DtTo datetime

declare @DayName VARCHAR(12)

select @DtFrom=convert(datetime,@month +'/'+@day1+'/'+@year,101)

SELECT @DtTo=convert(datetime,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@DtFrom)+1,0)),101)

declare @DateList TABLE ([Day] varchar(20),Dt datetime)

BEGIN

Select @DayName=

case

when @DayNo=1 then 'Sunday'

when @DayNo=2 then 'Monday'

when @DayNo=3 then 'Tuesday'

when @DayNo=4 then 'Wednesday'

when @DayNo=5 then 'Thursday'

when @DayNo=6 then 'Friday'

when @DayNo=7 then 'Saturday'

end

IF NOT (@DayName = 'Monday' OR @DayName = 'Sunday' OR @DayName = 'Tuesday' OR @DayName = 'Wednesday' OR @DayName = 'Thursday' OR @DayName = 'Friday' OR @DayName = 'Saturday')

BEGIN

--Error Insert the error message and return

INSERT INTO @DateList

SELECT 'Invalid Day',NULL AS DAT

RETURN

END

DECLARE @TotDays INT

DECLARE @CNT INT

SET @TotDays = DATEDIFF(DD,@DTFROM,@DTTO) -- [NO OF DAYS between two dates]

SET @CNT = 0

WHILE @TotDays >= @CNT -- repeat for all days

BEGIN

-- Pick each single day and check for the day needed

IF Datename(DW,(@DTTO - @CNT)) = @DAYNAME

BEGIN

INSERT INTO @DateList

SELECT @DAYNAME,(@DTTO - @CNT) AS DAT

END

SET @CNT = @CNT + 1

END

select * FROM @DateList

RETURN



END


e.g : If i/p like
@year=2008
@month=12
@DayNo=5

then o/p will be like


Day Dt
-------------------- -----------------------
Thursday 12/25/2008 11:59:59 PM
Thursday 12/18/2008 11:59:59 PM
Thursday 12/11/2008 11:59:59 PM
Thursday 12/4/2008 11:59:59 PM


-Happy Codding(-_-)


Comments

No responses found. Be the first to comment...


  • Do not include your name, "with regards" etc in the comment. Write detailed comment, relevant to the topic.
  • No HTML formatting and links to other web sites are allowed.
  • This is a strictly moderated site. Absolutely no spam allowed.
  • Name:
    Email: