我需要計算一個設定周期在另一個設定周期中包含多少天。我有桌子
create table #test
(
,project nvarchar(10),
startProjectDate date,
endProjectDate date)
insert into #test values
('EE43213','2021-12-31','2022-01-06') ,
('EE0211213','2022-01-09','2022-03-14'),
('EE53134','2022-02-18','2022-02-22')
我有日期引數(將來的用戶輸入)
DECLARE @startDate DATE = N'2021-12-16'
DECLARE @endDate DATE = N'2022-03-02'
對于我需要計算的每個專案,他們的運行時間將在用戶選擇的時間段內設定多少天,然后 * 這取決于一些 koeff。
我有案例,如果整個專案處于引數設定期間,我只是在兩個專案日期之間找到 datediff 和 * 它。
case when (startProjectDate BETWEEN @startDate and @endDate)
and (endProjectDate BETWEEN @startDate and @endDate)
then DATEDIFF(day, startProjectDate , endProjectDate) 1 * coeff else ...
但是,如果他們只是部分設定在此期間,如何找到天數?
uj5u.com熱心網友回復:
似乎您只需要 aDATEDIFF和一些CASE運算式:
DECLARE @StartDate DATE = N'20211216',
@EndDate DATE = N'20220302';
SELECT project,
DATEDIFF(DAY, CASE WHEN startProjectDate < @StartDate THEN @StartDate ELSE startProjectDate END, CASE WHEN endProjectDate > @EndDate THEN @EndDate ELSE endProjectDate END) AS DaysInRange,
DATEDIFF(DAY,startProjectDate, endProjectDate) AS DaysInProject
FROM #test
WHERE startProjectDate <= @EndDate
AND endProjectDate >= @StartDate;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443771.html
