2015-05-04 112 views
-1

任何人都可以解釋此查詢嗎?解釋此查詢

SELECT CASE 
     WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Saturday' 
      THEN 
       REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)+2,111),'/','') 
     WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Sunday' 
      THEN 
       REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)+1,111),'/','') 
     ELSE 
      REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0),111),'/','') 
     END 
AS RXRatingsTrialV3DailyChange 

結果是RXRatingsTrialV3DailyChange20150501。我真的不明白的是查詢的哪一部分是寫日期'20150501'?

感謝

+1

這是CONVERT – dnoeth

+0

我不明白的是它是如何獲得20150501當這不是今天的日期 – Rene

回答

0

的DATEADD用,0)是這樣做的。

SELECT CASE 
     WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Saturday' 
      THEN 
       REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)+2,111),'/','') 
     WHEN DATENAME(WEEKDAY, dateadd(mm, DATEDIFF(MM, 0, getdate()), 0)) = 'Sunday' 
      THEN 
       REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)+1,111),'/','') 
     ELSE 
      REPLACE('RXRatingsTrialV3DailyChange' + CONVERT(VARCHAR(10), DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0),111),'/','') 
     END 
AS RXRatingsTrialV3DailyChange, 
getdate()m, 
DATEDIFF(mm,0,GETDATE()), 
DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0)