如何使用SQL Server proc在7天前通知用户许可证在7天后到期

时间:2019-02-17 12:31:29

标签: sql sql-server

我在SQL Server的end_date和start_date列中有一个表,我想在该许可证到期前的7天零1天之前向用户发送电子邮件。怎么

1 个答案:

答案 0 :(得分:0)

  

我想在7天前1天之前向用户发送电子邮件   该许可证即将到期。

select * from mytable
where 
(CAST(end_date as DATE) = DateAdd(DD,1,GETDATE()))
OR
(CAST(end_date as DATE) = DateAdd(DD,7,GETDATE())) 

因此,如果您通过电子邮件发送到期通知不同的措辞,则可以将其细分为两个单独的查询。

您确实需要每天使用调度程序来运行此程序,或者如其他海报指出的那样使用代理程序作业来运行此程序。

我还没有尝试过,所以您可能还需要在DateAdd周围放置CAST。我不确定您要查询的数据类型是什么。通常最好张贴表格或表格的一部分,以便我们更好地回答问题。

如果您想要一个穷人调度程序,这是一种非常糟糕的实现方式,则可以执行以下操作borrowed from here

CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- The interval between cleanup attempts
    declare @timeToRun nvarchar(50)
    set @timeToRun = '03:33:33'

    while 1 = 1
    begin
        waitfor time @timeToRun
        begin
            execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
        end
    end
END