mysql根据15位或者18位身份证号计算年龄的自定义函数

这篇博客介绍了如何在MySQL中创建一个自定义函数,用于根据15位或18位身份证号码以及日期来计算年龄。内容包括函数参数有效性检查、去除空格以及针对不同长度身份证号码的年龄计算方法。最后,作者对函数进行了验证并欢迎读者提供反馈。
摘要由CSDN通过智能技术生成

mysql中,根据提供的15位或者18位身份证号和日期计算年龄

输入的参数:身份证和日期

1、判断输入的参数是否有效;

2、做去空处理;

3、分别根据15位和18位进行计算年龄(个人感觉其中某些步骤可以合并);

最后对函数进行验证,如有错误烦请指正,谢谢哦~

CREATE DEFINER=`root`@`localhost` FUNCTION `cal_age`(sfzh varchar(32),  date varchar(32)) RETURNS varchar(10) CHARSET utf8
    READS SQL DATA
    DETERMINISTIC
    COMMENT '根据身份证号计算年龄'
BEGIN
	DECLARE AGE VARCHAR(10); -- 计算得到的年龄
	# CHECK INPUT 
	IF SFZH = '' OR DATE = '' THEN RETURN NULL;
	END IF;	
	SET SFZH = REPLACE(SFZH, ' ', '');
	SET DATE = REPLACE(DATE, ' ', '');
	# CHECK LENGTH
	IF (LENGTH(SFZH)<>18 AND LENGTH(SFZH)<>15) OR LENGTH(DATE)<>8 THEN RETURN NULL;
	END IF;
	# CALULATE LENGTH=18 SFZH
	IF LENGTH(SFZH) = 18 THEN
		IF SUBSTRING(SFZH,11,2) > SUBSTRING(DATE,5,2) THEN
			
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值