首页 > 解决方案 > 使用 SQL Server 发送电子邮件并在特定日期之前进行检查

问题描述

我有一个使用存储过程发送电子邮件的查询,该存储过程将在某个日期(在我的情况下为截止日期)从某些电子邮件的当前日期为 -1 或 -2 时发送电子邮件。

我正在使用任务调度程序,因为我不仅不运行此查询,还运行另一个查询;调度程序从星期一到星期五运行。

例如,如果截止日期为 2019 年 10 月 11 日(星期五),则电子邮件将在 2019 年 10 月 9 日(星期三)和 2019 年 10 月 10 日(星期四)发送。

如果截止日期是星期三、星期四或星期五,则下面的查询可以正常工作;我的问题是,如果截止日期与周末重叠,如何改进查询。

例如,如果截止日期是 10 月 14 日(星期一),我想在 10 月 10 日(星期四)和 10 月 11 日(星期五)发送电子邮件。

或者如果截止日期是 10 月 15 日(星期二),则电子邮件将在 10 月 11 日(星期五)和 10 月 12 日(星期一)发送。

这是我的代码

SELECT 
    pv.email, 
    CONVERT(VARCHAR(17), dbo.getPQDocSubmissionClosingDate(pqh.process_id), 113) AS pq_doc_closing_date
FROM 
    prequalification_vendor pv 
JOIN 
    prequalification_header pqh ON pv.prequalification_header_id = pqh.id
JOIN 
    proposal_header ph ON ph.tender_number = pqh.tender_number
WHERE 
    pv.pq_registration_status = 'Register' 
    AND pv.pq_docs_uploaded IS NULL  
    AND (DATEDIFF(DAY, dbo.getPQDocSubmissionClosingDate(pqh.process_id) , (SELECT CONVERT (DATE , GETDATE()))) = -2
         OR DATEDIFF(DAY, dbo.getPQDocSubmissionClosingDate(pqh.process_id) , (SELECT CONVERT (DATE , GETDATE()))) = -1)

dbo.getPQDocSubmissionClosingDate(pqh.process_id)--> this 从另一个函数返回日期时间

标签: sqlsql-serverstored-proceduressql-server-2008-r2

解决方案


推荐阅读