我需要获取前一天的数据,如果是星期二那么我需要周一的数据,这已经完成了这个声明并且它有效:
Date >= dateadd(day,datediff(day,1,GETDATE()),0)
AND Date < dateadd(day,datediff(day,0,GETDATE()),0)
但我的问题是,如果它是星期一,那么我需要星期五而不是星期日的数据,我该怎么办呢。我正在使用SQL Server 2010。
谢谢, 最好的祝福 蛋黄酱
答案 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