create function udf_GetAge(@StartDate datetime,@EndDate datetime) returns integer -- 返回精确年龄 select dbo.udf_GetAge('1949-10-01',getdate()) begin return datediff(year,@StartDate,@EndDate) - case when datediff(day,dateadd(year,datediff(year,@StartDate,@EndDate),@StartDate),@EndDate) >= 0 then 0 else 1 end end
go
create function udf_DaysOfYearByDate(@Date datetime) RETURNS integer -- 返回年的天数 可判断 平(365)、润(366) 年 begin return datediff(day,dateadd(year,datediff(year,0,@Date),0),dateadd(year,datediff(year,0,@Date )+1,0)) end
go
create function udf_DaysOfYear(@Year integer) RETURNS integer -- 返回年的天数 可判断 平(365)、润(366) 年 begin return datediff(day,dateadd(year,@year - year(0),0),dateadd(year,@year - year(0) + 1,0)) end
go
create function udf_HalfDay(@Date datetime) returns datetime -- 返回 @Date 是 上午 返回 @Date 的零点,@Date 是 下午 返回 @Date 的十二点 as begin return case when datepart(hour,@Date) < 12 then dateadd(day,datediff(day,0,@Date),0) --上午归到 零点 else dateadd(hour,12,dateadd(day,datediff(day,0,@Date),0)) --下午归到 十二点 end end
go
create function udf_WeekDiff(@StartDate datetime,@EndDate datetime) returns integer -- 返回 [@StartDate , @EndDate] 之间周数 周日是当周的最后一天 begin