我在SQL Server的end_date和start_date列中有一个表,我想在该许可证到期前的7天零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