2005-09-29

SQL Server中如何计算农历

来源: 软件屋 作者:软件屋 评论 0 条
 

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 下一页
(本文仅表明作者个人观点,不代表本站及其管理员立场.) 推荐 收藏 投稿 打印 返回 关闭
上一篇:深入探讨SQL Server 2000对XML的支持  
下一篇:未来几年动态语言谁将成为主流
    评论加载中…
 推荐文章
     

网站首页  -  网站地图 -   站长论坛  -  网站投稿  -    -  网站管理
Copyright © 2008 芜湖站长站 All Rights Reserved 皖ICP备07500611号