注册 登录
编程论坛 SQL Server论坛

关于函数创建和调用遇到的问题

cnxl 发布于 2011-05-18 21:31, 459 次点击
创建一个函数,实现根据学生的学号,得到学生的年龄
create function f_getstudentage2(@sno varchar(15))  ---- 创建函数
returns smalldatetime
as
begin
    declare @age smalldatetime
    select @age = year(getdate())-year( 出生时间) from 学生表
    where 学号 = @sno
    return @age
end
----------------------------------
print dbo.f_getstudentage2('2006030101')    -- 调用函数
01 24 1900 12:00AM    -- 结果
为什么year(getdate())-year( 出生时间)不起作用,我想显示的是年龄如:23岁,不是1988-01-02 这种类型
数据库里的数据是1988-01-02这种格式
2 回复
#2
go20112011-05-18 23:30
1.return及@age的数据类型是否应改为int
2.getdate是一不具确定性的函数,而在SQLSERVER2000的function中不能使用不具确定性的函数,SQLSERVER2005中能不能用没试过
3.如果是SQLSERVER2000,可考虑改用数据存储
#3
cnxl2011-05-18 23:51
问题解决了 谢谢 是你说的那样
1