我正在处理一个存储过程,其中用户从一个简单的 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
这是部分数据的截图(由于数据保护,不能再显示了)
对于我希望它工作的方式,它不应该返回这些记录(它们是我想忽略的本周星期三)
我不知道为什么它会退回这些,所以任何帮助都会得到帮助