我来自编程背景,我在围绕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
答案 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结束)