代码之家  ›  专栏  ›  技术社区  ›  CSF90

GETDATE()的CASE语句

  •  2
  • CSF90  · 技术社区  · 11 年前

    想知道你是否可以在这里的语法上有所帮助。试图将一个变量设置为一个月的值,这取决于它是否超过了该月的第25天。

    如果是,则使用当前月份(例如,如果日期是10月28日,则变量“month”将为10,但如果是10月24日,则为9)。到目前为止,我得到了以下内容:

    select a
    case
        when (SELECT DAY(GETDATE()) >= 25
        then a = (SELECT MONTH(GETDATE()))
        else a = (SELECT MONTH(GETDATE()) - 1)
    end
    

    我知道你不能使用小于或大于符号,因为案例陈述只用于评估(=)?有人能提出另一种方法吗?

    谢谢

    4 回复  |  直到 11 年前
        1
  •  3
  •   juergen d    11 年前
    select @your_variable = case when DAY(GETDATE()) = 25
                                 then MONTH(GETDATE())
                                 else MONTH(GETDATE()) - 1
                            end 
    
        2
  •  1
  •   Ouscux    11 年前

    据我所知,你需要这种用法;

    select
    case
        when DAY (GETDATE()) = 25 then  MONTH(GETDATE())
        else  MONTH(GETDATE()) - 1
    end
    
        3
  •  1
  •   Gerardo Lima    11 年前

    您可以使用 > < 具有的运算符 CASE 。以下是你所期望的吗?

    SELECT CASE WHEN DAY(GETDATE()) > 24
        THEN MONTH(GETDATE())
        ELSE MONTH(GETDATE()) + 1
    END AS [a]
    
        4
  •  0
  •   Suraj Singh    11 年前
    IF
     DAY(GETDATE()) <=25
     SELECT DATEADD(month,-1,CURRENT_TIMESTAMP)