Sql server 使用SQL自动生成电子邮件

Sql server 使用SQL自动生成电子邮件,sql-server,Sql Server,我有编程背景,我很难理解SQL的条件。 我希望在sql表中满足两个条件时自动生成电子邮件 如果列NextTestDate中的值不为null,并且今天的日期等于下一个测试日期+30天,则生成一封电子邮件 SELECT * FROM dbo.datmaintest if NextTestDate is NOT NULL AND DATEADD(day,30,DATEDIFF(day, 0, GETDATE())) = DATEADD(DAY, DATEDIFF(day, 0, NextTest),

我有编程背景,我很难理解SQL的条件。 我希望在sql表中满足两个条件时自动生成电子邮件

如果列NextTestDate中的值不为null,并且今天的日期等于下一个测试日期+30天,则生成一封电子邮件

SELECT * FROM dbo.datmaintest
if NextTestDate is NOT NULL
AND DATEADD(day,30,DATEDIFF(day, 0, GETDATE())) = DATEADD(DAY, DATEDIFF(day, 0, NextTest), 0) then

BEGIN               
use msdb
    GO
    EXEC sp_send_dbmail @profile_name='ControllerDB',
    @recipients='test@test.com',
    @subject='ITS ALIVE!',
    @body='Time to grab lunch'
END

认为你正在寻找这样的东西

IF EXISTS(
    select *
    FROM dbo.datmaintest
    where DATEADD(day, 30, DATEDIFF(day, 0, GETDATE())) = NextTestDate
)

    EXEC sp_send_dbmail @profile_name='ControllerDB'
        , @recipients = 'test@test.com'
        , @subject = 'ITS ALIVE!'
        , @body = 'Time to grab lunch'

类似的内容应该让您开始(我假设在日期逻辑部分,您的意思是键入“nextettate”而不是“nextettest”):


基本上,声明一个变量并将其设置为要检查的数据库中的值。然后,执行检查,如果是真的,开始发送电子邮件(并以结尾结束)

您使用的是MySQL还是SQL server?它们不是同一件事。对于澄清,NextTestDate和GETDATE都返回日期和时间值。第二个条件周围的额外代码确保时间不会干扰我的日期comparison@JohnCondeSQL Server您正在询问如何设置
数据库邮件
?(或者那部分已经起作用了吗?)我不确定你在这里想做什么,但你的情况不会像那样起作用。我怀疑你只是想用一个存在的。不确定下一个日期的所有日期数学的意义是什么,因为它将有效地返回相同的值。肖恩,谢谢你的建议。我对你的答案稍加修改就可以使我的问题得到解决。我还有一个问题,有没有办法在生成的电子邮件中包含每个结果的ID号?(假设列名为ID)谢谢您的回答。这似乎也是一个可行的解决办法
DECLARE @NextTestDate DATETIME
SET @NextTestDate = (SELECT TOP 1 NextTestDate FROM dbo.datmaintest)

--If the value is not null and today is equal to the value of 'next test date' + 30 days:

IF @NextTestDate IS NOT NULL 
    AND DATEDIFF(DAY, @NextTestDate, GETDATE()) = 30

    BEGIN               
    use msdb
        GO
        EXEC sp_send_dbmail @profile_name='ControllerDB',
        @recipients='test@test.com',
        @subject='ITS ALIVE!',
        @body='Time to grab lunch'
    END