震惊,刷新我的认知,医疗信息数据库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不是日期
浙公网安备 33010602011771号