SQL Server - 7天后通知30,15

时间:2018-05-21 16:15:21

标签: sql-server

我试图纠正将执行以下任务的SQL查询:

示例:

ExpirationDate =  '2018-04-30 00:00:00.000'

当属性设置为在30天后过期... 1个月之前,我希望SQL Server通过电子邮件通知我该项目即将到期(Expirationdate)

有人可以给我一些指示,告诉我下一步的地方......这是我到目前为止所尝试的内容。 下面的查询将找到该项目,但我现在希望SQL Server代理为我返回的每一行发送一封电子邮件,而不是在没有返回任何内容时

SELECT * 来自[dbo]。[财产] WHERE expirationdate< = DateAdd(day,30,GetDate())

1 个答案:

答案 0 :(得分:0)

以下是关于如何通过SQL Server作业代理发送电子邮件结果的优秀链接:

https://www.brentozar.com/archive/2014/10/send-query-results-sql-server-agent-job/

至于你的查询:我不会选择*。明确选择要在电子邮件回复中返回的列。

接下来,我将定义一个变量来保存截止值,这将阻止您对查询中的每一行进行计算。例如:

DECLARE @day30UpperBound DATETIME = DATEADD(Day, 31, cast(getdate() as date));
DECLARE @day30LowerBound DATETIME = DATEADD(Day, 30, cast(getdate() as date));

然后您可以使用以下命令查询结果:

SELECT explicitColumnList FROM [dbo].[Property] 
WHERE expirationdate BETWEEN @day30LowerBound AND @day30UpperBound

此特定示例应该为您提供那些属性,其有效期限在当前午夜30天的窗口内,到当前午夜时间的31天 - 因此从当天起30天内完整的24小时窗口。

您可以轻松地为15天和7天的报告重现这一点。您可以将所有3个报告放入一个作业代理中。或者你可以为3中的每一个做一份不同的工作。

如果您想要的话,您将不得不研究一下如何只处理工作日。