成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

巧用SQL函數讓公歷變農歷

數據庫 SQL Server
下面就將為您介紹讓公歷變農歷的SQL函數寫法,如果您在此方面遇到過問題不妨一看,希望對您學習SQL有所幫助。

如果使用SQL函數讓公歷轉農歷,應該如何寫這個函數呢?下面就將為您介紹讓公歷變農歷的SQL函數寫法,供您參考,希望對您學習SQL有所幫助。
 

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


CREATE FUNCTION [dbo].[fn_GetLunar1](
@solarDay DATETIME)   
RETURNS varchar(200)

AS
BEGIN   
DECLARE @solData int   
DECLARE @offset int   
DECLARE @iLunar int   
DECLARE @i INT    
DECLARE @j INT    
DECLARE @yDays int   
DECLARE @mDays int   
DECLARE @mLeap int   
DECLARE @mLeapNum int   
DECLARE @bLeap smallint   
DECLARE @temp int   
   
DECLARE @YEAR INT    
DECLARE @MONTH INT   
DECLARE @DAY INT   
     
DECLARE @OUTPUTDATE varchar(100)

--保證傳進來的日期是不帶時間   
SET @solarDay=cast(@solarDay AS char(10))   
SET @offset=CAST(@solarDay-'1900-01-30' AS INT)

   
--確定農歷年開始   
SET @i=1900   
--SET @offset=@solData   
WHILE @i<2050 AND @offset>0   
BEGIN   
    SET @yDays=348   
    SET @mLeapNum=0   
    SELECT @iLunar=dataInt FROM SolarData WHERE yearId=@i    
    
    --傳回農歷年的總天數   
    SET @j=32768   
    WHILE @j>8   
    BEGIN   
      IF @iLunar & @j >0   
        SET @yDays=@yDays+1   
      SET @j=@j/2   
    END   
   
    --傳回農歷年閏哪個月 1-12 , 沒閏傳回 0   
    SET @mLeap = @iLunar & 15   
   
    --傳回農歷年閏月的天數 ,加在年的總天數上   
    IF @mLeap > 0   
    BEGIN   
      IF @iLunar & 65536 > 0   
        SET @mLeapNum=30   
      ELSE    
        SET @mLeapNum=29   
   
      SET @yDays=@yDays+@mLeapNum   
    END   
       
    SET @offset=@offset-@yDays   
    SET @i=@i+1   
END   
     
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   
if @bLeap=1
SET @OUTPUTDATE=convert(varchar(10),CAST((CAST(@YEAR AS VARCHAR(4))+'-'+CAST(@MONTH AS VARCHAR(2))+'-'+CAST(@DAY AS VARCHAR(2))) AS DATETIME) ,120)+',1'
else
SET @OUTPUTDATE=convert(varchar(10),CAST((CAST(@YEAR AS VARCHAR(4))+'-'+CAST(@MONTH AS VARCHAR(2))+'-'+CAST(@DAY AS VARCHAR(2))) AS DATETIME) ,120)+',0'
RETURN @OUTPUTDATE
END
 

 

【編輯推薦】

詳解SQL中的DATALENGTH函數

字符型IP地址轉換成數字IP的SQL函數

教您使用SQL中的TRUNC函數

SQL中表變量是否必須替代臨時表

詳解SQL中循環結構的使用

 

責任編輯:段燃 來源: 互聯網
相關推薦

2010-09-09 10:10:29

SQL函數轉換

2010-09-26 10:35:47

sql替換語句

2010-09-30 10:25:35

2010-09-16 17:56:31

SQL server臨

2023-11-01 11:52:22

lunar語言版本

2011-01-13 14:38:00

JavascriptCSSWeb

2015-09-11 10:45:55

服務器華為

2009-08-12 16:47:36

C#轉換農歷

2011-03-09 14:18:37

SQL數據累加

2011-07-21 13:52:43

組策略網絡打印機

2018-12-25 14:40:04

SQL ServerSQL語句數據庫

2009-10-20 11:12:26

綜合布線系統

2010-09-25 16:17:25

SQL語句

2022-10-27 10:06:16

Presto SQLAntlr大數據

2011-08-02 15:39:30

SQL Server iSql

2011-09-06 09:02:06

程序員

2010-09-07 14:45:34

sql語句

2009-06-26 17:33:00

雙核刀片多核

2015-05-25 15:14:38

FusionServe服務器華為

2018-12-26 09:25:30

SQL ServerSQL語句數據庫
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美在线a | 日韩欧美一区二区在线播放 | 国产成人99久久亚洲综合精品 | 久草.com| 欧美在线免费 | 久久久久久久久久性 | 亚洲一区二区三区在线播放 | 国产精品高潮呻吟久久 | 国产色播av在线 | 亚洲精品久久久久久一区二区 | 亚洲 精品 综合 精品 自拍 | 久久久久久网站 | 成人免费观看男女羞羞视频 | 久久综合一区二区 | 久久免费国产 | 美日韩精品 | 国产精品久久 | 免费av观看| 波多野结衣二区 | 日本一区二区高清不卡 | 午夜欧美日韩 | 欧美一区精品 | 久久精品免费观看 | 四虎影音 | 91精品国产手机 | 国产精品成人一区二区三区夜夜夜 | 欧美乱大交xxxxx另类电影 | 国产视频精品免费 | 精品欧美一区二区在线观看视频 | 热99精品视频 | 精品久久国产老人久久综合 | 在线免费观看毛片 | 九九热久久免费视频 | 一区二区在线 | 国产精品99久久久久久www | 亚洲美女在线视频 | 成人午夜视频在线观看 | 中文字幕一区二区三区日韩精品 | 国产精品久久国产精品99 | 亚洲 欧美 日韩 在线 | 国产免费a视频 |