Sql 忽略上周四和本周四之间的记录不起作用

Sql 忽略上周四和本周四之间的记录不起作用,sql,sql-server-2008,datetime,stored-procedures,Sql,Sql Server 2008,Datetime,Stored Procedures,我正在开发一个存储过程,用户从一个简单的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

我正在开发一个存储过程,用户从一个简单的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))
找出上周的星期四和本周的星期四

但是,当我在存储过程中使用它时,它仍然会返回这些日期之间的记录

这是存储过程中使用它的部分

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
这是一些数据的屏幕截图(由于数据保护,无法再显示)

对于我希望它工作的方式,它不应该返回这些记录(它们是本周的星期三,我想忽略它们)


我不明白为什么它会返回这些文件,所以任何帮助都会被告知

只是一个更新,在修补转换部件后产生了一个问题,所以我删除了它,它就工作了

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   

甚至不知道我为什么要将转换部分放在那里

您是否使用了一周开始的哪一天的正确设置?您可以使用
选择@DATEFIRST
进行检查。是的,但我已经解决了。请解释为什么你对这个问题投了否决票,这样我下次可以更好地问你?我不明白它怎么了。