ALTER PROCEDURE [dbo].[spInsert]
(@PlanName Varchar(50)=null
,@StartDate Datetime
,@EndDate Datetime
,@ModifiedBy Varchar(100)=null
,@ReturnValue Int Out)
As
BEGIN
IF NOT EXISTS(SELECT PlanName FROM dbo.tblPlan WHERE [email protected])
BEGIN
IF((SELECT COUNT(*) FROM tblPlan WHERE StartDate <= @StartDate AND EndDate <=
@EndDate)<0)
BEGIN
INSERT INTO dbo.tblPlan VALUES(3,@PlanName,@StartDate,@EndDate,@ModifiedBy,GETDATE(),
(SELECT DATEDIFF(DD,@StartDate,@EndDate)))
SET @ReturnValue=1;
END
ELSE
SET @ReturnValue=-2;
END
ELSE
SET @ReturnValue=-1;
END
我想實現下面的事情。我想檢查用戶提供的startDate和Enddate是在現有的表startdate和enddate之間。如果用戶提供的日期範圍中的任何日期位於表格開始日期和結束日期之間,則應返回-2,如果記錄不存在,則應該插入詳細信息。日期範圍日期之間不存在
I無法實現此邏輯我錯了,請告訴我任何解決方案。
編輯:首先Consulton檢查planName是否存在或不存在,如果不存在則想檢查開始和結束日期是否已存在或不存在(包括開始和結束) 我嘗試了兩種方式,如回覆中所述。
例如:如果現有開始和結束範圍是開始2013-10-09,結束2013-10-15,如果要插入另一個計劃,則該計劃的開始和結束日期不應該在9日十月十五日和開始日期和結束日期不應該是第9或第15日。
ONE:IF((SELECT COUNT(*) FROM tblPlan WHERE StartDate <= @StartDate AND EndDate <=
@EndDate)=0)
Result: It does not insert any data, even it is out of previous date. or with in the
range
SECOND:IF((SELECT COUNT(*) FROM tblPlan WHERE StartDate>[email protected] AND
EndDate<[email protected])=0)
RESULT: It insert the date with out Considering the above condition.
'開始日期<= @StartDate日期和結束日期<= @ EndDate'檢查這些條件不應該是像'起始日期> = @StartDate日期和結束日期<= @ EndDate' – 2013-10-07 05:04:37