Sql 解释这个问题

Sql 解释这个问题,sql,sql-server-2012,Sql,Sql Server 2012,有人能解释一下这个问题吗 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

有人能解释一下这个问题吗

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”

谢谢

带有的日期添加(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)

我不明白的是,当20150501不是今天的日期时,它是如何得到的