1

我有一张表,每周三都会填充数据。所以我需要从上周三到最近发生的周三获取这些数据。

例如: 如果今天是星期四(06/06/2013),那么我需要从29/05/2013(即上个月的最后一个星期三,5 月)到05/06/2013(昨天)获取数据

我试过了

select dateadd(dd,datediff(dd,0,'GetDate()')/7 * 7 + 2,0)给出 05/06/2013 select dateadd(wk,-1,datediff(dd,0,'GetDate()')/7 * 7 + 2)给出29/05/2013

在代码中,dateadd(dd,datediff(dd,0,'GetDate()')/7 * 7转到一周的第一天(在本例中为星期一),并通过添加 +2 给出星期三的日期。

问题除星期一外,代码工作正常。

例如:考虑下周一(即 10/06/2013),

它给出了从2013 年 5 月 6 日(昨天)到2013年 6 月 12 日(下周三)的结果, 而不是我需要 29/05/2013(即上周周三的上一个)到2013年 5 月 6(昨天)

有任何想法吗?

4

1 回答 1

4
DECLARE @ActualDatePayable DATETIME,@LASTDateMonth DATETIME

SET @ActualDatePayable='02/01/2013'

SET @LASTDateMonth=DATEADD(d,-1,DATEADD(m,1,@ActualDatePayable))

SET @ActualDatePayable=(select MAX(date) AS LastWednesday from (

select dateadd(day,number,@ActualDatePayable) as date from master..spt_values 
where type='p' and number < DAY(@LASTDateMonth) ) t
where   datename(weekday,date) = 'Wednesday')

SELECT @ActualDatePayable
于 2013-06-07T01:05:45.583 回答