2013-10-03 90 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)