| IF @offset <= 0 BEGIN SET @offset=@offset @yDays SET @i=@i-1 END --确定农历年结束 SET @YEAR=@i --确定农历月开始 SET @i = 1 SELECT @iLunar=dataInt FROM SolarData WHERE yearId=@YEAR --判定那个月是润月 SET @mLeap = @iLunar & 15 SET @bLeap = 0 WHILE @i < 13 AND @offset > 0 BEGIN --判定润月 SET @mDays=0 IF (@mLeap > 0 AND @i = (@mLeap 1) AND @bLeap=0) BEGIN--是润月 SET @i=@i-1 SET @bLeap=1 --传回农历年闰月的天数 IF @iLunar & 65536 > 0 SET @mDays = 30 ELSE SET @mDays = 29 END ELSE --不是润月 BEGIN SET @j=1 SET @temp = 65536 WHILE @j<=@i BEGIN SET @temp=@temp/2 SET @j=@j 1 END IF @iLunar & @temp > 0 SET @mDays = 30 ELSE SET @mDays = 29 END --解除闰月 IF @bLeap=1 AND @i= (@mLeap 1) SET @bLeap=0 SET @offset=@offset-@mDays SET @i=@i 1 END IF @offset <= 0 BEGIN SET @offset=@offset @mDays SET @i=@i-1 END --确定农历月结束 SET @MONTH=@i --确定农历日结束 SET @DAY=@offset SET @OUTPUTDATE=CAST((CAST(@YEAR AS VARCHAR(4)) '-' CAST(@MONTH AS VARCHAR(2)) '-' CAST(@DAY AS VARCHAR(2))) AS DATETIME) RETURN @OUTPUTDATE END ---------------------------------------------------------------------- --调用方法 select dbo.fn_GetLunar(getdate())
|
| 共4页: 上一页 [1] [2] [3] 4 下一页 |
评论加载中…