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

本文介绍了一个SQL查询解决方案,用于批量查找即将过期的资源,并通过邮件等方式进行自动提醒,包括创建数据、设置间隔日期、查询结果及优化查询方式等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目开发过程中,我们经常需要查询某些即将到期的资源信息,并给相关的人通过邮件等形式进行提醒。这类需求非常普遍,今天写了一个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 records
INSERT INTO @Employees
SELECT 'Ryan',    '1972-06-01' UNION ALL
SELECT 'James',   '1985-06-02' UNION ALL
SELECT 'Jasson',  '1983-06-03' UNION ALL
SELECT 'Tara',    '1991-06-04' UNION ALL
SELECT 'William', '1992-06-05' UNION ALL
SELECT 'Judy',    '1989-06-06' UNION ALL
SELECT 'Justin',  '1989-06-07';

2.设置间隔日期

--Variable to provide required number of days
DECLARE @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 @Employees
WHERE DATEPART( Week, DATEADD( Year, DATEPART( Year, GETDATE()) - DATEPART( Year, ExpiredDate), ExpiredDate))
      = DATEPART( Week, GETDATE());

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值