我有三个用户自定义函数,我想实现下面这种自定义函数如何写,可以通过参数Y,Q,W来改变获取的值,就像自带的GETDATE()有year,week,weekday等参数一样自定义函数名('2011-01-29',Y)=2012
自定义函数名('2011-01-29',Q)=1
自定义函数名('2011-01-29',W)=1create function Get_FiscalYear
(@Year datetime)
returns int
as
begin
return DateDiff(Y,'2011-01-29',@Year)/364+2012
endcreate function Get_FiscalQtr
(@Qtr datetime)
returns int
as
begin
return DateDiff(D,'2011-01-29',@Qtr)/91+1-(4*(DateDiff(Y,'2011-01-29',@Qtr)/364))
endcreate function Get_FiscalWeek
(@Week datetime)
returns int
as
begin
return DateDiff(D,'2011-01-29',@Week)/7+1-(52*(DateDiff(Y,'2011-01-29',@Week)/364))
end
自定义函数名('2011-01-29',Q)=1
自定义函数名('2011-01-29',W)=1create function Get_FiscalYear
(@Year datetime)
returns int
as
begin
return DateDiff(Y,'2011-01-29',@Year)/364+2012
endcreate function Get_FiscalQtr
(@Qtr datetime)
returns int
as
begin
return DateDiff(D,'2011-01-29',@Qtr)/91+1-(4*(DateDiff(Y,'2011-01-29',@Qtr)/364))
endcreate function Get_FiscalWeek
(@Week datetime)
returns int
as
begin
return DateDiff(D,'2011-01-29',@Week)/7+1-(52*(DateDiff(Y,'2011-01-29',@Week)/364))
end
解决方案 »
- 如何用select查看表和视图的存在?
- 求SQL语句
- 字段为某一特定值,某些字段不能为空的约束怎么写.
- 请问VC下怎样用ADO调用存储过程执行后的执行结果?
- 存储过程执行的顺序
- 如何从sqlserver2008的日志察看昨天某个时间段的操作
- 简单的问题,帮忙解决一下~~~~~~~~~~~~~~~~~
- MS SQL Server 7 的数据同步
- 用ACCESS2000开发,后台为SQL SERVER7的关于存储过程
- 请问:如何从unix进程中获取excel所需的数据
- 数值索引,只有等于(字段A=10)才用上索引,其他大于、小于都没用上索引?
- 把一个表中数据插入到另一个表中,按顺序每次只select一条数据,sql怎么写?
(@dt datetime,@f char(1))
returns int
as
begin
return (case @f when 'Y' then year(@dt) when 'Q' then datepart(wk,@dt) when 'W' then datepart(dw,@dt) else 0 end)
end
go
select dbo.get_yourset('2011-01-29','Y')
select dbo.get_yourset('2011-01-29','Q')
select dbo.get_yourset('2011-01-29','W')
/*
-----------
2011(1 行受影响)
-----------
5(1 行受影响)
-----------
7(1 行受影响)*/