2013-04-10 34 views
-2

如何獲得昨天的日期,如果當前日期是星期一,我需要週日,週六和週五。這已經被要求here訪問ms。我現在需要這個SQL服務器。我將如何去做這件事?獲取昨天的日期,如果星期一得到SQL服務器的週末範圍

將創建一個內聯視圖,它將在SQL中返回前一個日期根據當前日期,它將返回1到3行。

如果當前日期是星期一返回:

Sundays date 
Saturdays date 
Fridays date 
  • 如果當前日期是星期二則返回:星期一日期
  • 如果當前日期在星期三這則返回:週二日期
  • 如果當前日期爲週四然後返回:週三日期
  • 如果當前日期是星期五然後返回:星期四日期
  • 如果curren牛逼日期是星期六則返回:週五日
  • 如果當前的日期是星期天則返回:週六日

我希望這有助於解釋什麼,我想更清楚地做。

樣本選擇查詢

--get previous date 
select * from [Purchase Orders] where MyDate in (previous date(s)) 
+0

? – Kermit 2013-04-10 15:57:00

+0

因此,如果是其他任何一天,它會返回一個值,但如果是星期一,則會返回3個值?你會怎樣回報它? – 2013-04-10 16:04:19

+0

該列的數據類型是DATETIME [2]還是DATE? – 2013-04-10 16:25:31

回答

0

不完全清楚不過的問題。但是你可以在類似的方面做些事情。
使用DATEPARTDATEADD

DECLARE @TodaysDate DATETIME 
SET @TodaysDate = '2013-04-10' 


SELECT CASE 
    WHEN DATEPART (DW, DATEADD (DD, -1, @TodaysDate)) IN (1, 6, 7) 
    THEN 'WeekEnd' ELSE 'WeekDay' 
    END D 
+0

我會讓問題更清楚 – Luke101 2013-04-10 17:12:03

0

使用您鏈接到查詢,你可以試試下面的代碼:如何使用`DATEADD`

SELECT * 
    FROM [Purchase Order] 
WHERE MyDate >= CASE 
        WHEN DATENAME(dw, CONVERT(CHAR(8), GETDATE() , 112)) LIKE 'Monday' THEN CONVERT(CHAR(8), DATEADD(dd, -3, GETDATE()), 112) 
        ELSE CONVERT(CHAR(8), DATEADD(dd, -1, GETDATE()), 112) 
       END 
    AND MyDate < CONVERT(CHAR(8),GETDATE(),112)