选择上一个日期的数据,但在sql中排除星期六和星期日

时间:2015-12-04 08:21:07

标签: sql reporting-services

我需要获取前一天的数据,如果是星期二那么我需要周一的数据,这已经完成了这个声明并且它有效:

Date >= dateadd(day,datediff(day,1,GETDATE()),0)
        AND Date < dateadd(day,datediff(day,0,GETDATE()),0) 

但我的问题是,如果它是星期一,那么我需要星期五而不是星期日的数据,我该怎么办呢。我正在使用SQL Server 2010。

谢谢, 最好的祝福 蛋黄酱

1 个答案:

答案 0 :(得分:0)

使用SQL Server,您可以使用DATEPART返回表示星期几的整数。

默认情况下,星期的开始是星期日,返回1,因此星期一返回2。我默认说,因为我应该引起你的注意SET DATEFIRST命令,如果使用它可以改变默认行为。请注意这一点,但它可能不会影响您的特定情况。

然后,一个简单的案例陈述,提供今天的相关抵消应该给昨天或周一,将减去3天给上一个星期五:

-- Calculate your FROM date i.e. the previous week day
DECLARE @fromDate DATETIME
DECLARE @toDate DATETIME

SET @fromDate = SELECT DATEADD(DAY, CASE WHEN datepart(dw,getdate()) = 2 THEN -3 ELSE -1 END, GETDATE()) 

-- To remove the time portion then embed this into your original syntax
SET @fromDate = SELECT DATEADD(DAY, DATEDIFF(DAY, 0, DATEADD(DAY, CASE WHEN datepart(dw,getdate()) = 2 THEN -3 ELSE -1 END, GETDATE())), 0)

-- Add one day to @fromDate to get the To Date
SET @toDate = DATEADD(day, 1, @fromDate)

-- Final selection simply becomes
Date >= @fromDate AND Date < @toDate