sql通过日期判断年龄函数的示例代码

定义函数:

CREATE FUNCTION [dbo].[GetAge]
(
@BirthDay nvarchar(20) --生日
)
RETURNS varchar(20)
AS
BEGIN
if(@BirthDay is NUlL or @BirthDay='')
return '';
 -- Declare the return variable here
 DECLARE @age varchar(20)
 DECLARE @years int
 DECLARE @months int
 DECLARE @days int
 -- Add the T-SQL statements to compute the return value here
 set @age = ''  

 set @years = year(GETDATE()) - year(@birthday)
 set @months = month(GETDATE()) - month(@birthday)
 if day(@birthday)<=day(GETDATE())
   set @days = day(GETDATE()) - day(@birthday)
 else
   begin
     set @months = @months - 1
     if MONTH(@birthday) in (1,3,5,7,8,10,12)
       set @days = 31-day(@birthday)+day(GETDATE())
     else if MONTH(@birthday) in (4,6,9,11)
       set @days = 30-day(@birthday)+day(GETDATE())
     else if MONTH(@birthday) = 2
       if (year(@birthday)%4 = 0 and year(@birthday)%100 <> 0) or year(@birthday)%400 = 0
         set @days = 29-day(@birthday)+day(GETDATE())
       else
         set @days = 28-day(@birthday)+day(GETDATE())
   end
 if @months < 0
   begin
     set @years = @years - 1
     set @months = @months + 12
   end
 if @years = 0 and @months = 0
 begin
     return convert(varchar,@days+1) + '天'
  end
 if @years > 0
   set @age = cast(@years as varchar(5)) + '岁'
 if @years < 3 and @months > 0 and @years>-1
 begin
   set @age = @age + cast(@months as varchar(5)) + '月'
 end
 if @years<0
 set @age=''
 RETURN @age
END

使用函数:

到此这篇关于sql通过日期判断年龄函数的示例代码的文章就介绍到这了,更多相关sql日期计算年龄内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Postgresql 通过出生日期获取年龄的操作

    三个基础的时间表示函数 CURRENT_DATE/CURRENT_TIME/NOW() SELECT CURRENT_DATE ; 返回当前日期以 年-月-日(yyyy-MM-dd)的形式: 2019-01-10 SELECT CURRENT_TIME; 返回当日时间以 时:分:秒+时区(HH:mm:ss )的形式: 17:49:11.585308+08 SELECT NOW(); 返回当前时间 以 年-月-日 时:分:秒(yyyy-MM-dd HH:mm:ss)的形式: 2019-01-10

  • Mysql出生日期转换为年龄并分组统计人数的方法示例

    查询数据库 SELECT * FROM `student` 查询结果 id name birthday 1 张三 1970-10-01 2 李四 1990-10-01 3 王五 2002-10-01 4 马六 2003-10-01 转换为年龄的查询语句,使用函数TIMESTAMPDIFF SELECT id, name, birthday, TIMESTAMPDIFF(YEAR,student.birthday,CURDATE()) as age FROM `student` 查询结果 d na

  • Mysql中通过生日计算年龄的多种方法

    以前使用mysql不是很多,对mysql的函数也不是很熟悉,遇到这个问题第一时间百度搜索,搜索到这两种方法,这两种方法是排在百度第一条的博客. 方法一 SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(birthday)), '%Y')+0 AS age 方法一,作者也说出了缺陷,就是当日期为未来日期时结果为0,而不是负数:这里使用了5个函数和两个运算符. 方法二 SELECT DATE_FORMAT(NOW(), '%Y') - DATE_

  • sql通过日期判断年龄函数的示例代码

    定义函数: CREATE FUNCTION [dbo].[GetAge] ( @BirthDay nvarchar(20) --生日 ) RETURNS varchar(20) AS BEGIN if(@BirthDay is NUlL or @BirthDay='') return ''; -- Declare the return variable here DECLARE @age varchar(20) DECLARE @years int DECLARE @months int DEC

  • C++日期类(Date)实现的示例代码

    目录 类的定义 确定某年某月有多少天 构造函数 打印日期 日期+=天数 日期+天数 日期-=天数 日期-天数 前置++ 后置++ 后置– 前置– >运算符重载 ==运算符重载 >=运算符重载 <运算符重载 <=运算符重载 !=运算符重载 计算两个日期之间的间隔天数,日期减去日期 类的定义 #pragma once #include < iostream> using std::cout; using std::cin; using std::endl; class Da

  • SqlServer2000+ 身份证合法校验函数的示例代码

    下面看下sqlserver2000身份证校验的代码,具体代码如下所示: /* 身份校验行数 */ if exists(select * from sysobjects where name='fun_utils_idnumberoprater' and type='FN') drop function fun_utils_idnumberoprater go create function fun_utils_idnumberoprater ( @idnumber varchar(50)=''

  • MySQL 日期时间加减的示例代码

    目录 1.MySQL加减某个时间间隔 2.日期相减 最近在复习MySQL,正好看到了MySQL 日期时间,本文就给自己留个笔记,顺便分享给大家 now (); 当前具体的日期和时间 curdate (); 当前日期 curtime(); 当前时间 1.MySQL加减某个时间间隔 设置当前日期变量 set @dt = now(); //设置当前日期 select @dt; //查询变量值 加减某个时间间隔函数date_add()与date_sub() date_add('某个日期时间',inter

  • C语言模拟实现strstr函数的示例代码

    目录 strstr函数介绍 BF算法介绍 BF算法模拟实现strstr函数 KMP算法介绍 KMP算法模拟实现strstr函数 strstr函数介绍 C语言提供了字符串匹配函数 strstr 函数,请看文档简介. 这个函数是用来匹配 str2 是否包含在 str1 字符串中,如果匹配成功,则返回指向str1中第一个出现的str2的指针,如果str2不是str1的一部分,则返回空指针.我们不妨举例说明,请看下面代码,调用 strstr 函数需要引入string.h头文件,我们发现,s1字符串中可以

  • MybatisPlus使用聚合函数的示例代码

    目录 前言 方式1 通过select自定义sql 求一个sum 求多个sum 方式2 xml手写原生sql 总结 前言 今天遇到了一个求总数返回的情况,我一想这不是用sum就完事了吗. 但是仔细想想,MybatisPlus好像没有直接使用sum的api. 虽然没有直接提供,但是办法还是有的,下面就分享下如何实现的: 首先如果使用sql是这么写的: ok,既然知道了sql怎么写的,那就开始写代码吧 注意,本文主要以sum为例,但是也同时适用于其他聚合函数,比如avg,min,max 方式1 通过s

  • C#判断数据类型的简单示例代码

    C#判断数据类型的简单示例代码: 复制代码 代码如下: int   i   =   5; Console.WriteLine( "i is an int? {0}",i.GetType()==typeof(int)); Console.WriteLine( "i is an int? {0}",typeof(int).IsInstanceOfType(i));

  • Opencv判断颜色相似的图片示例代码

    问题描述 有一个项目,大体是要判断一下一篇文章内的配图突不突兀. 素材准备 所以就从网上随便找了4张图: 可以看出,前3张图片从颜色上.从阅读感受上,应该是相似的,而最后一张应该是不同的. 而当我们只对图片做缩放(为了跑得快),然后用bgr通道出直方图算相似度时: 却发现,只有第一张和第二张图片的相似度是大于0.5的,而第二.三张,以及第三.四张图片之间的相似度几乎都小于等于0.1. 思考方法 于是,经过思考后我觉得,判断两张图片在颜色上相不相似,其本质在于判断其直方图分布的形状相不相似,而不应

  • 判断javascript的数据类型(示例代码)

    1 判断是否为数组类型 复制代码 代码如下: <STRONG><script type="text/javascript"> //<![CDATA[ var a=[0]; document.write(isArray(a),'<br/>'); function isArray(obj){ return (typeof obj=='object')&&obj.constructor==Array; } //]]> </

  • C++时间戳转换成日期时间的步骤和示例代码

    因工作需要,经常跟时间戳打交道,但是因为它仅仅是一个数字,我们很难直接看出它有什么意义,或两个时间戳之间究竟差了多长的间隔.于是从MSDN for Visual Studio6上找到了时间戳转换成日期时间的算法.本文除介绍这一算法外,还提供一个示例代码. 1.将时间戳转换成一串32比特的二进制数.有些数字转换之后不够32位,则在前面补充0.这可通过windows自带的计算器完成.比如481522543转换成 0001 1100 1011 0011 0111 0011 0110 1111 2.根据

随机推荐