-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 回答