sql陽曆轉陰曆

sql中农历阳历之间的转换问题 <br />本文来自tony的完善版。链接地址为:<br />http://topic.youkuaiyun.com/u/20100424/07/29529d9d-bc54-4877-b198-4426b4d85024.html<br /> <br />呵呵,由于需要做个农历生日提醒的所以找到了,保留着,收藏为网摘的实在是有些乱,还是放这比较好,O(∩_∩)O哈哈~<br /> <br /> <br />--创建基础数据表<br />if object_id('SolarData') is not null<br /> 阅读详情

USE [rossic]
GO
/****** Object:  StoredProcedure [dbo].[fn_GetLunar]    Script Date: 02/23/2010 15:46:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
     
CREATE     proc   [dbo].[fn_GetLunar]          
 -- RETURNS   datetime   
  @solarDay   DATETIME ,  
  @OUTPUTDATE   DATETIME  output   
  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   @solarDay datetime        
               
     
       
      --保证传进来的日期是不带时间          
      SET   @solarDay = CONVERT(varchar(10),@solarDay,120)
-- getdate()         
      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          
           
      SET   @OUTPUTDATE=CAST((CAST(@YEAR   AS   VARCHAR(4))+'-'+CAST(@MONTH   AS   VARCHAR(2))+'-'+CAST(@DAY   AS   VARCHAR(2)))   AS   DATETIME)          
   
  END        

MySQL阳历转农历SQL实现 MySQL阳历转农历SQL实现 在mysql上通过SQL语言实现的阳历转农历, 年份跨越从1900到2049年. 立即下载

相关推荐

OpenCLI入门:让任何网站变成你的命令行工具(超详细版)

最有用的工具,往往是最简单的。 opencli就是这样。 它不会帮你写代码,不会帮你做决策,但它能把200+个平台装进你的命令行。 让你用最简单的方式,获取最丰富的数据。

weixin_66295112的博客 2089

sql公历转农历

CREATE TABLE SolarData ( yearId int not null primary key, data char(7) not null, dataInt int not null ) go--插入数据 INSERT INTO SolarData SELECT 1900,'0x...

290

PWM(脉宽调制)技术详解:从基础到应用实践示例

PWM(脉宽调制)技术是嵌入式系统中一项重要的控制技术,通过调节脉冲宽度来实现对模拟设备的精准控制。从LED亮度到电机速度,PWM的应用场景非常广泛。对于嵌入式学习者来说,理解PWM的工作原理、掌握其配置方法,不仅能提升编程能力,还能为更多复杂系统的开发打下坚实的基础。

SpringWJN的博客 6325

mysql的yearweek 和 weekofyear函数

1.MySQL 的 YEARWEEK 是获取年份和周数的一个函数,函数形式为YEARWEEK(date[,mode]) 例如 2010-3-14 ,礼拜天 SELECT YEARWEEK('2010-3-14') 返回 11 SELECT YEARWEEK('2010-3-14',1) 返回 10 其中第二个参数是 mode ,具体指的意思如下: Mode First day...

Java海洋 4万+

别再用默认参数了!手把手教你用2P2Z补偿网络优化Buck电源的动态性能

本文详细介绍了如何通过2P2Z补偿网络优化Buck电源的动态性能,解决默认参数下的负载阶跃响应问题。从频域分析到元件选型,再到实测验证,手把手教你提升相位裕度,显著降低超调量和稳定时间,适用于DCDC和开关电源设计。

weixin_33657398的博客 256

手把手教你学Simulink——基于Simulink的滑模控制器车辆稳定性仿真建模示例

本文详细介绍了基于Simulink的滑模控制器在车辆稳定性控制中的应用。通过建立二自由度车辆动力学模型(含魔术公式轮胎),设计横摆角速度与质心侧偏角滑模控制器,在Simulink中实现直接横摆力矩控制。文章包含完整的建模流程:从参考模型设计、滑模控制器推导(含等效控制和边界层法),到MATLAB参数设定和Simulink模块搭建。通过双移线测试和路面突变场景验证,证明该控制器能在低附着路面(μ=0.3)将横摆角速度误差控制在±5%以内,显著提升车辆稳定性。同时提供了工程实践要点和扩展方向(如高阶滑模、自适应

MHD0815的博客 106

SQL 日期转换(阳历转阴历)

--步骤:创建日期表,放初始放初始化资料 --因为农历的日,是由天文学家推算出来,到现在只有到年,以后的有了还可以加入! if object_id('SolarData') is not nulldrop table SolarDatagocreate table SolarData ( yearid int not null, data char(7) not null, data...

weixin_30929295的博客 496

工程师必收藏,Juniper(Junos)网络设备命令大全

不要直接删除配置 → 使用deactivate配置前先修改大配置用出现风险命令一律用写自动化时一律用格式真正会用 Juniper 的工程师,不是命令多,而是命令用得精。

网络技术联盟站 403

oracle阴历转阳历换算,用sql语句实现阳历与农历转换

用sql语句实现阳历与农历转换1.建一张表 存放数据 在下面SQL函数中有用到create table solardata(yearid int not null,data char(7) not null,dataint int not null)--插入数据insert intosolardata select 1900,'0x04bd8',19416 union...

weixin_36308751的博客 1625

【系统架构设计师】论文:论虚拟现实技术的应用与发展

虚拟现实技术是当前科学研究的热点,同时也是国家大力支持发展的核心技术之一。所谓虚拟现实,就是通过计算机等虚拟手段来构造一个非常接近真实世界的虚拟环境,它主要体现在视觉、触觉、嗅觉等方面的逼真模拟来达到高度的沉浸性,也就是如我们通常所说的“身临其境”。

数据知道的博客 1万+

ARM功耗管理软件之DVFS&AVS

思考:功耗管理软件栈及示例?WFI&WFE?时钟&电源树?DVFS&AVS?

AI-安全-功耗 1230

SQL存储过程--- (阳历转阴历)

<br />先建一表,放初始化资料 因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入! CREATE TABLE SolarData ( yearId int not null, data char(7) not null, dataInt int not null ) --插入数据 INSERT INTO SolarData SELECT 1900,'0x04bd8',19416 UNION ALL SELECT 1901

i am jacky 621

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SQL server 假日时间处理

自定义函数: 1,去掉周末(六,日): create function funtime(@BegTime datetime, @EndTime datetime) returns int as begin declare @re int set @re=0 while @BegTime &lt;=@EndTime begin select @re=@re+1 where (datepart(w...

251

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

mysql将公历农历转换_SQL 日期转换(阳历转阴历)

set @month=@i --确定农历日结束 set @day=ltrim(@offset)--输出日期set @chinesenum=N'〇一二三四五六七八九十' while len(@year)>0select @outputdate=isnull(@outputdate,'')+ substring(@chinesenum,left(@year,1)+1,1), @...

weixin_34110970的博客 1693

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【农历】计算方法--- (阳历转阴历)…

先建一表,放初始化资料 因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入! CREATE TABLE SolarData (     yearId int not null,     data char(7) not null,     dataInt int not null ) --插入数据 INSERT INTO SolarData SELECT 190

dongzi502的专栏 665

实现阳历转阴历的方法

今天突然想起如何转换日历的事,就上CNBLOGS查了下 找到了一篇文章 【农历】计算方法--- (阳历转阴历) http://www.cnblogs.com/zhangzs8896/archive/2004/10... 甚是感叹 摘过来 备用 CREATE TABLE SolarData( yearId int not null, data char(7) not nul...

weixin_30342209的博客 530

oracle阴历解决方案

1、新建年份编码表 /将日期转换成农历的表/ CREATE TABLE SolarData ( YearID INTEGER NOT NULL, -- 农历表 DATA CHAR(7) NOT NULL, -- 农历年对应的16进制数 DataInt INTEGER NOT NULL -- 农历年对应的10进制数 ); 2、为年份编码表插入数据 INSERT INTO SolarData VALUES(1900, '0x04bd8', 19416); INSERT INTO SolarData VALUE

var200的博客 678

CLR实现阴历阳历转换

CLR实现阴历阳历转换

mxbing1984的专栏 601

SQL Server公历转农历函数

--创建农历日期函数   if object_id('fn_GetLunar') is not null     drop function fn_GetLunar go  create function dbo.fn_GetLunar(@solarday datetime)       returns nvarchar(30)     as       begin

anihasiyou的专栏 4159

阳历转阴历

 因为农历的日期,是由天文学家推算出来的,到现在只有到2049年的,以后的有了还可以加入!CREATE TABLE SolarData(yearId int not null,data char(7) not null,dataInt int not null)--插入数据INSERT INTO SolarData SELECT 1900,0x04bd8,19416 UNION ALL SEL

学会独立思考 3450

阴历阳历SQL转换

 CREATE  TABLE  SolarData   (      yearId  int  not  null,      data  char(7)  not  null,      dataInt  int  not  null   )   --插入数据   INSERT INTO SolarData SELECT 1900,0x04bd8,19416  UNION  ALL 

技术专栏 1391

C#实现阳历转阴历的方法

 CREATE TABLE SolarData( yearId int not null, data char(7) not null, dataInt int not null)--插入数据INSERT INTO SolarData SELECT 1900,0x04bd8,19416 UNION ALL SELECT 1901,0x04

changjiangzhibin的专栏 2337

Oracle 阳历转农历

CREATE TABLE SolarData ( YearID INTEGER NOT NULL, -- 农历年 DATA CHAR(7) NOT NULL, -- 农历年对应的16进制数 DataInt INTEGER NOT NULL --

Leeyon 2802
上一篇: 小写金额转换成大写
下一篇: 微軟ERP財務金額轉換為大寫
edpdennis
博客等级 码龄19年 10粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值