注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

海宏软件的个人主页

用机器解放人的双手

 
 
 

日志

 
 

通过sql计算周岁生日  

2015-08-03 18:00:43|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
--通过sql计算周岁生日,周岁生日不是年直接减,
--比如2001-03-01生日的,在2010-01-01并不是10岁,而是9岁;在2010-06-01时并不是11岁还是10岁
if object_id('getAge') is not null drop function getAge
go

--用法: select dbo.getAge('2005-1-3', getDate())
create function getAge(@dBorn dateTime, @dToday dateTime) returns int
as --计算周岁生日,力生智能,海宏软件,20150803
begin
declare @Debug bit, /*@dBorn dateTime, @dToday dateTime*/  @nAgeAdd int, @s varChar(1000)
select @debug=0
if @debug=1 select @dBorn='2005-1-3', @dToday='2015-8-3'
select @nAgeAdd=0, @dToday=isNull(@dToday,0)
--
declare @d dateTime, @d2 dateTime, @n int, @n2 int, @n3 int 
-- select @dToday=getDate(), @d=@dBorn 
select @d2=dateAdd(year, dateDiff(year, @dBorn, @dToday), @dBorn) 
select @n=dateDiff(year, @dBorn, @dToday) 
select @n2=dateDiff(day, @d2, @dToday)
select @n3=(case when @n2>=0 then 0 else -1 end)
--查看一下结果
-- if @debug=1 print '生日:'+@dBorn+ ', 今天:'+@dToday+ ',今年生日:'+@d2+', DateDiff(Year):'+convert(varChar(50),@n)+', 今年生日天数差:'+@n2+', (天数查>=0 then 0 else -1):'+convert(varChar(50),@n3)+', 周岁年龄:'+convert(varChar(50),@n+@n3+@nAgeAdd)
-- select @dBorn, @dToday, @d2, @n, @n2, @n3, @n+@n3+@nAgeAdd

--返回值
return @n+@n3+@nAgeAdd
end
go


--测试
select dbo.getAge('2005-1-5', '2015-8-5'), dbo.getAge('2005-8-5', '2015-8-5'), dbo.getAge('2005-9-5', '2015-8-5')

  评论这张
 
阅读(257)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017