ユーザーが単純な Web アプリケーションから支払いの種類を渡して、それらの支払いの種類のみを返すストアド プロシージャに取り組んでいます。
クレジット カードでの支払いについては、先週の木曜日から今週の木曜日までの記録を無視したいと考えています。
私はこれを書いた:
SELECT DATEADD(day, (DATEDIFF (day, 4, GETDATE()) / 7) * 7, 3)
SELECT CONVERT(datetime, CONVERT(nvarchar(20), DATEADD(day, 4 - DATEPART(dw, GETDATE()), GETDATE()), 103))
これは、先週の木曜日と今週の木曜日を見つけます。
ただし、保存された Proc でこれを使用すると、それらの日付の間のレコードが返されます。
これは、それが使用されるストアド プロシージャのセクションです。
ELSE IF @PaymentType = 'Credit Card'
BEGIN
SELECT DISTINCT [Variable]
,[Variable]
,[Variable]
,[Variable]
,[DueDate]
,[Variable]
,[Variable]
,[Variable]
,[Variable]
,[Variable]
,[Variable]
,[Variable]
FROM MyTable
WHERE PaymentMethod = 'Credit Card' AND
[DueDate] NOT BETWEEN DATEADD(day, (DATEDIFF (day, 4, GETDATE()) / 7) * 7, 3) AND
CONVERT(datetime, CONVERT(nvarchar(20), DATEADD(day, 4 - DATEPART(dw, GETDATE()), GETDATE()), 103))
ORDER BY DueDate desc
END
これは一部のデータのスクリーンショットです (データ保護のため、これ以上は表示できません)
私がそれを機能させたい方法では、これらのレコードを返すべきではありません(それらは無視したい今週の水曜日です)
なぜこれらを返すのかわかりませんので、助けていただければ幸いです