OK_008 blog

No incapable except unthinkable. God helps those who help themselves
随笔 - 115, 文章 - 0, 评论 - 91, 引用 - 8
数据加载中……

计算工龄,格式为n年n月n天


计算工龄函数,就是从到职日期到当前有多少年多少月多少天:

/*
功能:統計工齡,格式: n年n月n日
設計:ok_008
日期:2008-01
備注:
*/
CREATE FUNCTION SumWorkAge (@OnDutyTime datetime)
RETURNS nvarchar(50AS  
BEGIN 
    
DECLARE @Today datetime
    
SELECT @Today=Today FROM vwgToday
RETURN    
    
CAST((CASE WHEN DAY(@OnDutyTime)<=DAY(@Today)  THEN 0 ELSE -1 END +DATEDIFF(Month,@OnDutyTime,@Today))/12 AS nvarchar(2)) +''
    
+RIGHT('0'+CAST((CASE WHEN DAY(@OnDutyTime)<=DAY(@Today)  THEN 0 ELSE -1 END +DATEDIFF(Month,@OnDutyTime,@Today))%12 AS nvarchar(2)),2+''
    
+RIGHT('0'+CAST(CASE WHEN DAY(@OnDutyTime)<=DAY(@Today)  THEN  DAY(@Today)-DAY(@OnDutyTimeELSE 
        
DATEDIFF(Day,@OnDutyTime,DATEADD(month,1,@OnDutyTime))-DAY(@OnDutyTime)+DAY(@TodayEND AS nvarchar(20)),2+''
END






@OnDutyTime参数是到职日期。vwgToday是一个取当前日期的视图(因为在自定义函数中不能直接使用GETDATE())

视图
vwgToday代码:
CREATE VIEW dbo.vwgToday
AS
SELECT         GETDATE() AS Today







posted on 2008-01-04 17:32 OK_008 阅读(275) 评论(0)  编辑 收藏 所属分类: SQL 2000/SQL 2005


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      


相关链接: