如何将日期名称与日期进行比较并获取与之进行比较的日期?

时间:2015-07-17 14:52:30

标签: sql sql-server

我需要进行的部分查询检查是,如果它的星期一是该月的第一个工作日,则返回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

1 个答案:

答案 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