SQL查询即将合同即将到期的员工

来源:互联网 发布:linux下新建文件夹 编辑:程序博客网 时间:2024/05/01 16:49

在项目开发过程中,我们经常需要查询某些即将到期的资源信息,并给相关的人通过邮件等形式进行提醒。这类需求非常普遍,今天写了一个Demo,能够代表这类问题的解决方案,结合轮询机制,能够很好滴解决此类问题。

1.创建数据

ps:这里涉及到了表变量及Union All语法,不明白的请自行脑补!

传送门:

1.表变量

http://database.51cto.com/art/201011/233290.htm

2.Union 和 Union All

http://www.w3school.com.cn/sql/sql_union.asp

--Insert test recordsINSERT INTO @EmployeesSELECT 'Ryan',    '1972-06-01' UNION ALLSELECT 'James',   '1985-06-02' UNION ALLSELECT 'Jasson',  '1983-06-03' UNION ALLSELECT 'Tara',    '1991-06-04' UNION ALLSELECT 'William', '1992-06-05' UNION ALLSELECT 'Judy',    '1989-06-06' UNION ALLSELECT 'Justin',  '1989-06-07';

2.设置间隔日期

--Variable to provide required number of daysDECLARE @IntervalDays INT;SET @IntervalDays = 3;

3.查询结果

SELECT *FROM @Employees WHERE DATEADD( Year, DATEPART( Year, GETDATE()) - DATEPART( Year, ExpiredDate), ExpiredDate)      BETWEEN CONVERT( DATE, GETDATE())       AND CONVERT( DATE, GETDATE() + @IntervalDays);

4.通常都是查询一周内即将到期的,我们可以使用如下sql

SELECT * FROM @EmployeesWHERE DATEPART( Week, DATEADD( Year, DATEPART( Year, GETDATE()) - DATEPART( Year, ExpiredDate), ExpiredDate))      = DATEPART( Week, GETDATE());

第一种和第二种sql查询结果如下:



0 0
原创粉丝点击