使用SQL自动生成电子邮件

时间:2014-08-06 14:06:27

标签: sql-server

我来自编程背景,我在围绕SQL的条件问题时遇到了一些困难。 我在sql表中遇到两个条件时,我希望自动生成电子邮件。

如果NextTestDate列中的值不为空,则今天的日期相当于下一个测试日期+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

2 个答案:

答案 0 :(得分:0)

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

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'

答案 1 :(得分:0)

这样的事情应该让你开始(我假设在日期逻辑部分,你打算键入' NextTestDate'而不是' NextTest'):

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 

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