Author |
Topic |
nani2indra
Starting Member
1 Post |
Posted - 2009-12-03 : 22:20:53
|
DECLARE @startDate DATETIME, @endDate DATETIME;SET @startDate='2009.04.15';SET @endDate='2009.04.30';DECLARE @wholepart FLOAT;DECLARE @fraction FLOAT;IF(MONTH(@startdate)=MONTH(@enddate))BEGIN IF (MONTH(@endDate)IN(1,3,5,7,8,10,12)) BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,@startDate,DATEADD(DAY,1,@endDate)) *1.0/31.0 SELECT ROUND(@wholepart+@fraction,0) END IF (MONTH(@endDate)IN(4,6,9,11)) AND (DAY(@startdate)>15) BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,@startDate,DATEADD(DAY,1,@endDate)) *1.0/30.0 SELECT ROUND(@wholepart+@fraction,0) END IF(MONTH(@startdate)=2) AND (DAY(@startdate)>14) IF(YEAR(@startdate)%4=0) SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction = DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),DATEADD(DAY,1,@endDate)) *1.0/29.0 ELSE SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction = DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),DATEADD(DAY,1,@endDate)) *1.0/28.0 SELECT ROUND(@wholepart+@fraction,0)ENDELSE SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),@endDate) *1.0/ CASE WHEN MONTH(@endDate) IN (1,3,5,7,8,10,12) THEN 31.0 WHEN MONTH(@endDate) IN (4,6,9,11) THEN 30.0 WHEN MONTH(@endDate)=2 AND (YEAR(@endDate)%4 = 0) THEN 29.0 ELSE 28.0 ENDSELECT @wholepart+@fractionSELECT round(@wholepart+@fraction,0)I am getting null value can you fix it |
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2009-12-04 : 02:57:37
|
What are you trying to do?MadhivananFailing to plan is Planning to fail |
 |
|
rajdaksha
Aged Yak Warrior
595 Posts |
Posted - 2009-12-04 : 03:42:13
|
Hi Try this...DECLARE @startDate DATETIME, @endDate DATETIME;SET @startDate = '2009.04.15';SET @endDate = '2009.04.30';DECLARE @wholepart FLOAT;DECLARE @fraction FLOAT;IF(MONTH(@startdate)=MONTH(@enddate))BEGIN IF (MONTH(@endDate)IN(1,3,5,7,8,10,12)) BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,@startDate,DATEADD(DAY,1,@endDate)) *1.0/31.0 SELECT ROUND(@wholepart+@fraction,0) END IF (MONTH(@endDate)IN(4,6,9,11)) AND (DAY(@startdate)>15) BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,@startDate,DATEADD(DAY,1,@endDate)) *1.0/30.0 SELECT ROUND(@wholepart+@fraction,0) END IF(MONTH(@startdate)=2) AND (DAY(@startdate)>14) BEGIN IF(YEAR(@startdate)%4=0) BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction = DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),DATEADD(DAY,1,@endDate)) *1.0/29.0 END ELSE BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction = DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),DATEADD(DAY,1,@endDate)) *1.0/28.0 SELECT ROUND(@wholepart+@fraction,0) END END ELSE BEGIN SELECT @wholepart =DATEDIFF(MONTH,@startDate,@endDate) *1.0, @fraction =DATEDIFF(DAY,DATEADD(MONTH,@wholepart,@startDate),@endDate) *1.0/ CASE WHEN MONTH(@endDate) IN (1,3,5,7,8,10,12) THEN 31.0 WHEN MONTH(@endDate) IN (4,6,9,11) THEN 30.0 WHEN MONTH(@endDate)=2 AND (YEAR(@endDate)%4 = 0) THEN 29.0 ELSE 28.0 END ENDEND--ELSE Block MissingSELECT @wholepart+@fractionSELECT round(@wholepart+@fraction,0) -------------------------R... |
 |
|
madhivanan
Premature Yak Congratulator
22864 Posts |
Posted - 2009-12-04 : 04:01:36
|
rajdaksha, the result is NULL when the months are differentMadhivananFailing to plan is Planning to fail |
 |
|
rajdaksha
Aged Yak Warrior
595 Posts |
Posted - 2009-12-04 : 04:10:17
|
HiThere no else block IF (MONTH(@startdate) <> MONTH(@enddate))-------------------------R... |
 |
|
|
|
|