当前位置:系统粉 > 电脑问答 > 其他问答 > 新人求解一道数据库问题,要用sqlsever存储过程来处理,要具体实现代码

新人求解一道数据库问题,要用sqlsever存储过程来处理,要具体实现代码

提问者:残阳火丶雪月光  |  浏览 次  |  提问时间:2017-03-23  |  回答数量:1

新人求解一道数据库问题,要用sqlsever存储过程来处理,要具体实现代码新人求解一道数据库问题,要用sqlsever存储过程来处理,要具体实现代码愿意回答的我真心感谢??我是来求解不是来求批评教育的,不要说得你的代码很值钱很值钱一样,你不愿意回答可以不回答,不要拽得跟个二五八万一样,没人欠你的

已有1条答案
请你听我说爱

请你听我说爱

回答数:151  |  被采纳数:58

2017-03-24 21:06:00
楼主好,代码如下,自己写的,应该是能够满足你的需求。
CREATE
PROCEDURE [dbo].[GetTime]
@BirthDay nvarchar(20)
as
begin
declare @result nvarchar(20)
if DATEDIFF(YEAR,@BirthDay,GETDATE())>=14
begin
set @result= cast(DATEDIFF(YEAR,@BirthDay,GETDATE()) as nvarchar(6))+'岁'
end
if DATEDIFF(YEAR,@BirthDay,GETDATE())<14 and DATEDIFF(MONTH,@BirthDay,GETDATE())>=12
begin
if MONTH(GETDATE())-MONTH(@BirthDay)<0
set @result=cast(DATEDIFF(YEAR,@BirthDay,GETDATE())-1 as nvarchar(4))+'年零'+cast(datediff(mm,@BirthDay,GETDATE())%12 as nvarchar(4))+'月'
else
set @result=cast(DATEDIFF(YEAR,@BirthDay,GETDATE()) as nvarchar(4))+'年零'+cast(datediff(mm,@BirthDay,GETDATE())%12 as nvarchar(4))+'月'
end
if DATEDIFF(MONTH,@BirthDay,GETDATE())<12
begin
--当今天的日期号减去出生日期的日期号小于0,则判定为相对的月份天数不足一个月,则需要在计算月的时候减去1
--例如出生日期为2月20号,今天是4月15号,则时间差应该为1个月零26天,而不是两个月
if DAY(GETDATE())-DAY(@BirthDay)<0
set @result=cast(case when DATEDIFF(MONTH,@birthday,GETDATE())-1<0 then 0 else DATEDIFF(MONTH,@birthday,GETDATE())-1 end as nvarchar(4))+'月零'+cast(DATEDIFF(DAY,@birthday,GETDATE())-DATEDIFF(DAY,left(@birthday,7)+'-01',left(CONVERT(NVARCHAR(20),GETDATE(),23),7)+'-01') as nvarchar(4))+'天'
else
set @result=cast(DATEDIFF(MONTH,@birthday,GETDATE()) as nvarchar(4))+'月零'+cast(DATEDIFF(DAY,@birthday,GETDATE())-DATEDIFF(DAY,left(@birthday,7)+'-01',left(CONVERT(NVARCHAR(20),GETDATE(),23),7)+'-01') as nvarchar(4))+'天'
end
select @result
END
GO
赞 15
解决方法
版权信息

Copyright @ 2011 系统粉 版权声明 最新发布内容 网站导航