首页 > 新闻系统 > 编程天地 > 文章正文

教您如何自定义“计算工龄”函数

2008-01-14 13:16:40 来源:博客园 作者:OK_008 点击:
本文介绍了用SQL实现计算工龄的方法。

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

以下是引用片段:
  /*
  功能:統計工齡,格式: n年n月n日
  設計:ok_008
  日期:2008-01
  備注:
  */
  CREATE FUNCTION SumWorkAge (@OnDutyTime datetime)
  RETURNS nvarchar(50) AS
  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(@OnDutyTime) ELSE
  DATEDIFF(Day,@OnDutyTime,DATEADD(month,1,@OnDutyTime))-DAY(@OnDutyTime)+DAY(@Today) END AS nvarchar(20)),2) +'天'
  END

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

  视图vwgToday代码:

以下是引用片段:
  CREATE VIEW dbo.vwgToday
  AS
  SELECT GETDATE() AS Today


精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203