Windowsスケジューラを使用して自動実行するプログラムを作成しています。私がやりたいのは、毎月1日と16日に実行するようにプログラムを設定することです。プログラムが1日に実行された場合。先月のクエリを実行したいのですが...たとえば、今日が8月の最初の場合、7/1/12-7/31/12を実行したいと思います。プログラムを16日に実行する場合、今月から15日までのクエリを実行するようにします。たとえば、8/16の場合、プログラムで8/1/12〜8/15/12のクエリを実行する必要があります。
以下は私の質問です。月の1日を取得しないことを除いて、それはうまく機能します。(15日または1日なら)
例:7/1/12にクエリを実行すると、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
そこに月の最初を含める方法はありますか?