-1

ユーザーが単純な 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

これは一部のデータのスクリーンショットです (データ保護のため、これ以上は表示できません) ここに画像の説明を入力

私がそれを機能させたい方法では、これらのレコードを返すべきではありません(それらは無視したい今週の水曜日です)

なぜこれらを返すのかわかりませんので、助けていただければ幸いです

4

1 に答える 1

0

ちょうど更新、変換部分をいじった後、問題が発生していたので、それを削除して動作しました

WHERE  PaymentMethod = 'Credit Card' 
           AND [DueDate] NOT BETWEEN DATEADD(day, (DATEDIFF (day, 4, GETDATE()) / 7) * 7, 3) AND
           DATEADD(day, 4 - DATEPART(dw, GETDATE()), GETDATE())
    ORDER BY DueDate desc   

なぜその変換部分をそこに置いたのかさえわかりません

于 2013-08-08T10:37:15.933 に答える