现在要用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