我试图纠正将执行以下任务的SQL查询:
示例:
ExpirationDate = '2018-04-30 00:00:00.000'
当属性设置为在30天后过期... 1个月之前,我希望SQL Server通过电子邮件通知我该项目即将到期(Expirationdate)
有人可以给我一些指示,告诉我下一步的地方......这是我到目前为止所尝试的内容。 下面的查询将找到该项目,但我现在希望SQL Server代理为我返回的每一行发送一封电子邮件,而不是在没有返回任何内容时
SELECT * 来自[dbo]。[财产] WHERE expirationdate< = DateAdd(day,30,GetDate())
答案 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中的每一个做一份不同的工作。
如果您想要的话,您将不得不研究一下如何只处理工作日。