2013-10-03 58 views
2

想知道如果你能帮助一点这里的语法。试图将变量设置为月份值取决于它是否已经过去了该月的第25天。CASE声明与GETDATE()

如果是,则它使用当前月份(例如,如果日期是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 

我知道你不能使用小于号小于或更高,如case语句仅用于评估(=)?任何人都可以提出另一种做法吗?

谢谢。

回答

1

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

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

是的,正是我所需要的。非常感谢 :) – CSF90

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

很少支架在这里失去了我想 – Fred

+0

感谢。错过了他们。 –

+0

是的,这个作品完美。谢谢你的帮助。我只能将其中的一个标记为'答案',因为Ouscux首先发布了他的答案。如果我可以的话,我会鼓励你(没有足够的代表)! – CSF90

1

您可以使用><运营商CASE。以下是你的预期?

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