我有日期表,當(dāng)用戶輸入日期時,我想獲得具有正確值范圍的單個記錄。問題是日期范圍相交。這些是我擁有的表格數(shù)據(jù)記錄 1 | 最后日期 2019/01/01 | 日期 2019/12/3記錄 2 | 最后日期 2019/12/01 | 日期 2019/12/3例如,當(dāng)我輸入時,2019-05-1我應(yīng)該得到記錄 1,當(dāng)我輸入時,2019-12-05我應(yīng)該得到記錄 2。當(dāng)我輸入時,219-12-05我得到 2 條記錄,這是錯誤的。我創(chuàng)建了一條 SQL 語句,但每次都得到錯誤的值,我不知道如何修復(fù)它declare @currentrow int = 0set @dateQuery = '2018-04-01'select @count = count(*) from [dbo].[t_dates]while @currentrow < @count begin select @dateFrom = [date_from], @dateTo = [date_to] from [t_dates] where date_id = @currentrow + 1 select @dateId = date_id from [dbo].[t_dates] where ((@dateQuery between @dateFrom and @dateTo)) print @dateId print @dateFrom print @dateTo set @currentrow = @currentrow + 1end
2 回答

慕雪6442864
TA貢獻1812條經(jīng)驗 獲得超5個贊
SELECT top 1 [date_from],[date_to]
FROM [t_dates]
WHERE @dateQuery between [date_from] AND [date_to]
ORDER BY [date_to] desc,[date_from] desc

智慧大石
TA貢獻1946條經(jīng)驗 獲得超3個贊
你不需要所有的變量。一個簡單的 where 子句就足夠了。
SELECT *
FROM [t_dates]
WHERE Sartdate <= @dateQuery and EndDate >= @dateQuery
這將返回您在和之間@dateQuery范圍內(nèi)的記錄。我還假設(shè)您的帖子中有錯字,但為了清楚起見,我將其保留在這里。SartdateEndDateSartdate
- 2 回答
- 0 關(guān)注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消