/* =======================================
创 建 人: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. nyoj--8--一种排序(排序,水题)

    一种排序 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在有很多长方形,每一个长方形都有一个编号,这个编号可以重复:还知道这个长方形的宽和长,编号.长.宽都是整数:现 ...

  2. Windows 10 10586 升级

  3. Android ViewPager 动画效果

    找到个不错的开源项目:https://github.com/jfeinstein10/JazzyViewPager Android ViewPager 动画效果   

  4. 哪位大兄弟有用 cMake 开发Android ndk的

    一直用 Android studio 开发ndk,但是gradle支持的不是很好,只有experimental 版本支持 配置各种蛋疼.主要每次新建一个module都要修改配置半天.之前也看到过goo ...

  5. STM8S103之GPIO

    如何快速了解GPIO,查看Reference manual中GPIO章节,初步了解到GPIO GPIO输入分为:Floating Input和Input with pull-up GPIO输出分为:O ...

  6. oracle11g文件系统库迁移到ASM库上面

    最近把oracle11g的文件系统库迁移到了asm库上面. 迁移过程大致如下: 最少停机方案: 实例joinpay02 | |数据库joinpay02 需要改动的文件: 数据文件 控制文件 redo文 ...

  7. React显示文件夹中SVG

    import React from 'react'; import _ from 'lodash'; import styles from './iconPicker.less'; const req ...

  8. php>$_SERVER服务的一些常用命令

    $_SERVER['REMOTE_ADDR'] //当前用户 IP . $_SERVER['REMOTE_HOST'] //当前用户主机名   $_SERVER['REQUEST_URI'] //UR ...

  9. HDU 2196 Computer(经典树形DP)

    题意自己看(猜) 题解 这题很经典,就是记录dp[i][0/1/2]分别代表,从i点向下最大和次大深度,和向上最大深度. 然后转移就行了. 我的写法可能太丑了.死活调不出来,写了一个漂亮的 #incl ...

  10. [HNOI2004]打砖块(敲砖块)

    题目:codevs1257.洛谷P1437 题目大意:有一些砖块呈倒三角形状,每块砖敲掉后有一个分数.除第一行外,敲掉一块砖必须先把上面两块砖敲掉.现在你能敲m块砖,求能得到的最大分数. 解题思路:此 ...