Sql-Server

動態設置日期

  • July 23, 2019

我想dynamically在查詢的 where 子句中設置一個日期,但我不知道該怎麼做。

該查詢正在計算輸入日期 >= X 年 8 月 1 日的行數。

動態部分是如何計算年份。

如果查詢在 1 月 1 日之前執行entered on,則 where 子句中的日期將為currentyear/08/01

如果查詢從 1 月 1 日到 7 月 31 日執行entered on,則 where 子句中的日期將為previousyear/08/01

有誰知道如何做到這一點?

為此,您不需要動態 SQL。像這樣的東西應該​​工作:

WHERE date_column >= DATEFROMPARTS( 
       YEAR(GETDATE()) - CASE WHEN MONTH(GETDATE()) >= 8 THEN 0 ELSE 1 END, 
       8, 1 )

嘗試使用 CASE 表達式,因為您可以指定限定符,如您所描述的。

就像是…

Code :

Select Count (*)
CASE when date >= 1st August year X THEN enteredondate = currentyear/08/01
ELSE enteredondate= previousyear/08/01
End
from DateTable

引用自:https://dba.stackexchange.com/questions/243521