我正在制作一个使用 Windows 调度程序自动运行的程序。我想做的是将程序设置为在每个月的 1 日和 16 日运行。如果程序运行在 1 日。我想运行上个月的查询...例如,如果今天是 8 月 1 日,我希望它在 2012 年 7 月 1 日至 2012 年 7 月 31 日运行。如果我在 16 日运行程序,我希望它运行当月到 15 日的查询。例如,如果是 8/16,我希望程序运行 8/1/12 - 8/15/12 的查询。
以下是我的查询。它工作得很好,只是它没有得到当月的第一天。(如果是 15 号或 1 号)
例如:如果我在 2012 年 7 月 1 日运行查询,它应该发送 6/1-6/30 的结果现在它显示 6/2-6/30。如果我在 6/15 运行查询,它应该在 6/1 -6/15 运行......它在 6/2 - 6/15 运行它。
SELECT
Store_Number, Invoice_Number, Invoice_Date, Extended_Price,
Warranty_Amount, Quantity_Sold, Invoice_Detail_Code
FROM
Invoice_Detail_Tb
WHERE
(Invoice_Date BETWEEN (CASE WHEN datepart(dd, getdate()) = 1 THEN dateadd(mm, - 1, getdate()) ELSE dateadd(dd, - 15, getdate()) END)
AND (CASE WHEN datepart(dd, getdate()) = 1 THEN dateadd(dd, - 1, getdate()) ELSE dateadd(dd, - 1, getdate()) END))
AND (Warranty_Amount > 0)
AND (Store_Number = '309')
ORDER BY
Store_Number, Invoice_Date
知道如何将本月的第一天包含在其中吗?