我想创建一个函数,通过一条记录来检查年龄。如果年龄大于18岁,则保存记录。如果没有,不要保存记录。
create function f_Over18 (@age date)
returns char (20)
as begin
--declare @returnOne int
declare @date int
set @date= year(getdate()) - year(@age)
if (@date > 17)
begin
print ('Age verified') --this is only an example but i want, that safes the record
end
else
begin
print ('Age not verified')
end;
end;
非常感谢你的帮助。
1条答案
按热度按时间5lhxktic1#
问题实际上是如何在SQLServer中从出生日期计算年龄。这不是那么容易,因为没有内置的,因为功能,如
datediff()
不能真正给出准确的结果(或者至少没有很多卷积)。一种简单有效的方法是将出生日期和当前日期转换为格式
YYYYMMDD
,将其转换为字符串,然后使用简单的算术,如下所示:在您的功能中:
我稍微修改了原始代码,使其能够正确编译,并返回计算的日期(这使得调试更容易)。
现在我们可以测试: