我需要进行的部分查询检查是,如果它的星期一是该月的第一个工作日,则返回3天的日期,否则按原样返回。我想出了这段代码,但由于某种原因,它没有用。有什么建议吗?
RequestDate >= CASE WHEN(DATENAME(dw,DAY(@st)) like 'MONDAY') AND
(((Day(@st) = 01)) OR ((Day(@st) = 02)) OR ((Day(@st) = 03)))
THEN dateadd(d,-3,@st)
ELSE @st END
答案 0 :(得分:2)
我建议不要使用星期几的名称,而是使用星期值:
DECLARE @st DATETIME
SET @st = '06/01/2015'
SELECT
CASE
WHEN
DATEPART( DW, @st ) = 2 AND
DATEPART( D, @st ) < 4
THEN
DATEADD( D, -3, @st )
ELSE
@st
END AS RequestDate