当前位置: 代码迷 >> Sql Server >> 离休提醒和生日提醒
  详细解决方案

离休提醒和生日提醒

热度:68   发布时间:2016-04-24 10:19:14.0
退休提醒和生日提醒
现在要用SQL做两个提醒,30天内退休员工提醒,这个根据年龄去算,男的55退休,女的50退休
第二个是生日提醒,列出30天内过生日的员工
以上两个Sql语句该怎么写呢?
------解决方案--------------------
我建议在你的表中加一列作为提醒日期列,然后用这个语句填充数据,然后程序端或者用sql job每天运行一次,检查这列,当前日期等于这列时就触发提醒。生日和退休都类似
SELECT  CASE WHEN 性别 = 0
             THEN CONVERT(VARCHAR(10),DATEADD(DAY, -1,
                          DATEADD(DAY,
                                  1 - DATEPART(DAY,
                                               DATEADD(year, 55, 出生年月日)),
                                  DATEADD(year, 55, 出生年月日))),23)
             ELSE CONVERT(VARCHAR(10),DATEADD(DAY, -1,
                          DATEADD(DAY,
                                  1 - DATEPART(DAY,
                                               DATEADD(year, 55, 出生年月日)),
                                  DATEADD(year, 55, 出生年月日))),23)
        END AS [提醒日期]--假设性别=0为男性


------解决方案--------------------

-- 30天内退休员工提醒
select *
 from [表名]
 where datediff(dd,getdate(),dateadd(yy,case 员工性别 
                                        when '男' then 55 
                                        when '女' then 50 end,出生日期)) between 0 and 30

-- 30天内生日提醒
select *
 from [表名]
 where datediff(dd,
                getdate(),
                stuff(convert(varchar,出生日期,23),1,4,rtrim(year(getdate())))
               ) between 0 and 30
  相关解决方案