我正在处理存储过程,用户从简单的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
这是一些数据的屏幕截图(由于数据保护而无法再显示)
对于我希望它工作的方式,它不应该返回这些记录(它们是本周的星期三,我想忽略)
我无法弄清楚为什么它会返回这些,所以任何帮助都会得到满足
答案 0 :(得分: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
甚至不确定为什么我把那个转换部分放在那里