震惊,刷新我的认知,医疗信息数据库sqlserver中计算年龄的sql函数写了200行... - 指南

创作不易 只因热爱!!

热衷分享,一起成长!

“你的鼓励就是我努力付出的动力”


sqlserver中年龄计算,HIS体系中年龄计算函数

呈现的结果要求: 1周岁内显现"几月几天",1周岁以上显示"几岁"
在这里插入图片描述

在这里插入图片描述

CREATE  FUNCTION dbo.FUN_GETBRNL(
	 @birth   varchar(24), --生日
	 @now   varchar(16), --当前时间
	 @dwlb   varchar(2),  --单位类别  0:传出单位  1:不传单位
	 @cal_real varchar(2),  --0:周岁,1:虚岁
	 @brnldw1  varchar(4)  --年龄单位  0:岁  1:月  3:天
)
RETURNS varchar(20)
/*******
[描述] HIS系统--由生日得出年龄
*******/
as
BEGIN
	declare @birth8  varchar(8),  --八位出生日期,方便比较
		@now8  varchar(8),  --八位当前日期,方便比较
		@brnldw2  varchar(4),  --年龄单位2
		@year    integer,
		@month    integer,
		@day    integer,
		@day_dw    integer, --自动选择单位辅助天数
		@min    integer,
		@hour  integer,
		@mes_nl2 varchar(8),  --年龄2
		@mes_out   varchar(20)  --返回值
/*
select * from YY_BRNLDWDYK(nolock)
id	nlxx	nlsx	brnldw1	brnldw2
01	0.00	30.00	天	小时
02	31.00	365.00	月	天
03	366.00	54750.00	岁	月
*/
  	--过滤传入年龄 因原birth字段扩充导致加上8个空格导致拼接birthtime调用函数时被截断
	if charindex(' ',@birth)>0
		select @birth = replace(@birth,' ','')
 -- 再增加判断,如果传入的@birth,@now不是日期

posted on 2025-11-06 14:44  wgwyanfs  阅读(12)  评论(0)    收藏  举报

导航