日期:2014-05-17  浏览次数:20477 次

sql server 用户自定义函数---学转换函数设计
在sql server中怎么编写函数实现:如学年“2010-2011-1”对应于08级的同学应该是第5学期,函数作用是实现将形如“2010-2011-1”的学期表示形式转换为5的表示形式。
入口参数:学年,入学年份 
返回值:数字表示的学期。
比如输入2011-2012-1,08   则返回7 
麻烦帮忙写一下这个函数!!!谢谢啦!
------解决方案--------------------
create function getsemester(
@yyyy_mm as varchar(7),@grade as varchar(2)
)returns int
as
begin
declare @s int
select @s=datediff(m,left(@yyyy_mm,2)+@grade+'-09-01',@yyyy_mm+'-01')/6+1
return @s
end
go
select dbo.getsemester('2012-01','08')
select dbo.getsemester('2011-10','08')
/*
-----------
7

(1 行受影响)


-----------
7

(1 行受影响)

*/
go
drop function dbo.getsemester

------解决方案--------------------
我想到的算法是

(cast(left(学年,4) as int)-cast(入学年份 as int))x2+right(学年,1)