我有日期表,当用户输入日期时,我想获得具有正确值范围的单个记录。问题是日期范围相交。这些是我拥有的表格数据记录 1 | 最后日期 2019/01/01 | 日期 2019/12/3记录 2 | 最后日期 2019/12/01 | 日期 2019/12/3例如,当我输入时,2019-05-1我应该得到记录 1,当我输入时,2019-12-05我应该得到记录 2。当我输入时,219-12-05我得到 2 条记录,这是错误的。我创建了一条 SQL 语句,但每次都得到错误的值,我不知道如何修复它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条经验 获得超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条经验 获得超3个赞
你不需要所有的变量。一个简单的 where 子句就足够了。
SELECT *
FROM [t_dates]
WHERE Sartdate <= @dateQuery and EndDate >= @dateQuery
这将返回您在和之间@dateQuery范围内的记录。我还假设您的帖子中有错字,但为了清楚起见,我将其保留在这里。SartdateEndDateSartdate
- 2 回答
- 0 关注
- 140 浏览
添加回答
举报
0/150
提交
取消