带有GETDATE()的CASE语句

时间:2013-10-03 08:25:56

标签: sql sql-server-2008 case getdate

想知道你是否可以在这里帮助一点语法。尝试将变量设置为月份值,具体取决于它是否超过该月的第25天。

如果是,则使用当前月份(例如,如果日期是10月28日,变量'月'将是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 个答案:

答案 0 :(得分:2)

select @your_variable = case when DAY(GETDATE()) = 25
                             then MONTH(GETDATE())
                             else MONTH(GETDATE()) - 1
                        end 

答案 1 :(得分:1)

据我了解,您需要这种用法;

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

答案 2 :(得分:1)

您可以将><运算符与CASE一起使用。以下是您的预期吗?

SELECT CASE WHEN DAY(GETDATE()) > 24
    THEN MONTH(GETDATE())
    ELSE MONTH(GETDATE()) + 1
END AS [a]

答案 3 :(得分:0)

IF
 DAY(GETDATE()) <=25
 SELECT DATEADD(month,-1,CURRENT_TIMESTAMP)