/* =======================================
创 建 人:CuiYaChao
创建日期:2017-08-16
功能描述:通过身份证号来计算年龄
单元名称: Fun_GetCard
======================================= */
IF EXISTS (SELECT * FROM sys.objects WHERE name='Fun_GetCard')
DROP FUNCTION Fun_GetCard
GO
CREATE FUNCTION Fun_GetCard(@CardNo NVARCHAR(30))
RETURNS NVARCHAR(20)
AS
BEGIN
DECLARE @sResult NVARCHAR(20)=''
DECLARE @CardNoTwo NVARCHAR(30)=''
DECLARE @sYear INT =0
SELECT @CardNoTwo=REPLACE(@CardNo,' ','')
--18位的身份证号
IF LEN(@CardNoTwo)=18
BEGIN
SELECT @sResult=DATEDIFF(YEAR,SUBSTRING(@CardNoTwo,7,4),GETDATE())
END
--15位的身份证号
ELSE
BEGIN
SELECT @sYear=CAST(SUBSTRING(@CardNoTwo,7,2) AS INT)
--2000年前的或者 本年度前的
IF @sYear>17
BEGIN
SELECT @sResult=DATEDIFF(YEAR,CAST(('19'+CAST(@sYear AS NVARCHAR(10))) AS NVARCHAR(10)),GETDATE())
END
--2000年至本年度期间的
ELSE
BEGIN
--2010年之后的
IF LEN(@sYear)=2
BEGIN
SELECT @sResult=DATEDIFF(YEAR,CAST(('20'+CAST(@sYear AS NVARCHAR(10))) AS NVARCHAR(10)),GETDATE())
END
--2000年至2009年的
IF LEN(@sYear)=1
BEGIN
SELECT @sResult=DATEDIFF(YEAR,CAST(('200'+CAST(@sYear AS NVARCHAR(10))) AS NVARCHAR(10)),GETDATE())
END
END
END
RETURN @sResult
END
GO
--=================================================================================
SELECT DATEDIFF(YEAR,'1991','2017')
SELECT SUBSTRING('130503670401001',7,2)
SELECT dbo.Fun_GetCard('412723199105051238')'年龄'
SELECT dbo.Fun_GetCard('130503000401001')'年龄'

SQL--通过身份证号得到年龄的的更多相关文章

  1. SQL语句通过身份证号计算年龄

    SQL语句通过身份证号计算年龄 1.截取身份证号上的出生日期 身份证一般为18位数和15位数 18位数身份证的第7-10位数是出生年份,第11-14位数是出生月日,所以18位身份证的年龄计算如下 su ...

  2. Js 根据身份证号获取年龄-性别

    参考:http://www.tuicool.com/articles/J7r2ien 方式一: $scope.GetAgeAndSexByIDNum = function (IdCardNO) { / ...

  3. SQL 从身份证号得到出生日期、年龄、男女

    ), CONVERT(smalldatetime, SUBSTRING(b.IDCard, , )), ) AS BrithDate_Name, DATEDIFF(year, CONVERT(smal ...

  4. SQL 根据身份证号码获取年龄的函数

    在数据库的运用过程中,我们时常会碰到根据身份证号码来获取当前的年龄,今天我在这里写了一个函数,就是关于获取年龄的 create or replace function FUNC_COMPARE_SFZ ...

  5. sql 根据身份证号码计算年龄

    ,), GETDATE()) / 365.25) from ConstructionInfo

  6. PHP实现15位身份证号转18位

    PHP实现15位身份证号转18位 参考博客: 作者:selfimpr626 来源:CSDN (根据身份证号计算年龄,15位身份证号码转18位) 原文:https://blog.csdn.net/wei ...

  7. sql server 根据身份证号计算出生日期和年龄的存储过程

    我这边有一个业务,需要客户填写身份证号,自动计算他的出生日期和年龄 在sql中,具体的存储过程实现是这样的: /******************************************** ...

  8. 教你一招:根据身份证号计算出生年月和年龄 text函数和mid函数混用 datedif函数和today函数混用

    在电子表格Excel中,使用text函数和mid函数混用,根据身份证号计算出生年月: =text(mid(A2,,),"0!/00!/00") #0!/00!/00 为日期的格式# ...

  9. js脚本根据身份证号获取性别、年龄、家庭地址、生日

    做项目测试时需要根据身份证号获取其信息,也不想调接口,就自己在本地通过收集资料整合了一个

随机推荐

  1. Android之怎样改变焦点状态【EditText】

    以EditText为例 1.改变焦点状态 password.setOnFocusChangeListener(new OnFocusChangeListener() { @Override publi ...

  2. TS 函数解析

    ------------------------------------------------------------------------------------ 函数传参: //let myA ...

  3. CentOS7安装EPEL的两种方式

    转自:http://www.mamicode.com/info-detail-1671603.html epel是社区强烈打造的免费开源发行软件包版本库. EPEL,即Extra Packages f ...

  4. Pcap 数据报解析

    最近看了一下网络的书,信息系统也有实验任务,所以就学习了一下pcap包的解析. 主要是对内部以太网帧头,ip头部,tcp头部或者udp头部的解析.我因为用访问google.cn作为的样例,没有udp包 ...

  5. 电信流氓注入JS

    (function () { var cs_url = _pushshowjs_.url, cs_delay = window.cs_delay; var cs_styles = window.sty ...

  6. HTML基础——网站后台显示页面

    1.框架集标签:(作用:将页面进行区域的划分) <frameset rows="" cols=""> <frame src="&qu ...

  7. pic减法进位问题

    1.pic指令中subwf是 F - Wreg,且如果F>=Wreg,则C=1:如果F<Wreg,则C=0:这是由于pic的减法是加上减数的补码实现的.例如3-2,其实是3+FE=01,进 ...

  8. angular.js学习-ng-grid

    ng-grid是基于AngularJS和JQuery的富表格控件,由AngularUI Team领衔开发,到目前为止已有2354次Commit,1076个Fork.  AngualrUI:http:/ ...

  9. Matlab--从入门到精通(chapter2 matlab 基础知识)

    Chapter2 Matlab 基础知识 1.基本数学运算符号 注:矩阵的右除是一般意义的除法,但是左除具有对称意义,即A./B=B.\A 2. 命令行中的常用标点 3.常见的操作命令 4.输出数据显 ...

  10. AJAX和JSON实际应用

    实现功能:登录验证 一.因为我是在SpringMVC框架上写的,首先得添加依赖: <dependencies> <!-- 用来测试的依赖 --> <dependency& ...