为了账号安全,请及时绑定邮箱和手机立即绑定

检索交叉日期之间的特定日期 SQL Server

检索交叉日期之间的特定日期 SQL Server

C#
侃侃无极 2022-06-18 16:35:04
我有日期表,当用户输入日期时,我想获得具有正确值范围的单个记录。问题是日期范围相交。这些是我拥有的表格数据记录 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


查看完整回答
反对 回复 2022-06-18
?
智慧大石

TA贡献1946条经验 获得超3个赞

你不需要所有的变量。一个简单的 where 子句就足够了。


SELECT *

FROM [t_dates]

WHERE Sartdate <= @dateQuery and EndDate >= @dateQuery

这将返回您在和之间@dateQuery范围内的记录。我还假设您的帖子中有错字,但为了清楚起见,我将其保留在这里。SartdateEndDateSartdate


查看完整回答
反对 回复 2022-06-18
  • 2 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信