2
我在我的存儲過程@FromDate和@ToDate中有2個參數,我想弄清@FromDate和@ToDate之間的週數,@FromDate總是一個週一同時@ToDate始終是一個星期天,但日期可以覆蓋周,月等參數日期之間的週數 - 逐組 - SQL
目前我有DATEDIFF(WW,@FromDate,@ToDate)
它返回說4,但我想它返回1,2,3行和4行,而不是隻有一行。
達到此目的的最佳方法是什麼?
我在我的存儲過程@FromDate和@ToDate中有2個參數,我想弄清@FromDate和@ToDate之間的週數,@FromDate總是一個週一同時@ToDate始終是一個星期天,但日期可以覆蓋周,月等參數日期之間的週數 - 逐組 - SQL
目前我有DATEDIFF(WW,@FromDate,@ToDate)
它返回說4,但我想它返回1,2,3行和4行,而不是隻有一行。
達到此目的的最佳方法是什麼?
如果我猜中了:
With T(Number) as
(
Select 0 as Number
union all
Select Number + 1
from T
where Number < DATEDIFF(WW, @FromDate, @ToDate)
)
SELECT NUMBER FROM T WHERE Number>0;
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = GETUTCDATE() - 90
SET @EndDate = GETUTCDATE()
DECLARE @WeekNumber INT
SET @WeekNumber = DATEDIFF(WW, @StartDate, @EndDate) ;
WITH CTE_WeekNumber (WeekNumber)
AS (SELECT 1
WHERE @WeekNumber >= 1
UNION ALL
SELECT WeekNumber + 1
FROM CTE_WeekNumber
WHERE @WeekNumber >= WeekNumber + 1
)
SELECT *
FROM CTE_WeekNumber
情況下,它不會給正確的結果,答案是小於0回答會處理這種情況 –
@RohitSingh:我已經改變了這個查詢來處理這個問題在0周的情況下,它現在沒有返回任何東西。謝謝 – valex
謝謝,這很好。存儲過程在那裏的方式總是至少有1個,所以0周不會進入,但只是爲了安全起見。 – DtotheG