2016-02-19 24 views
1

长时间读者,第一次张贴海报。 我做了搜索,找不到任何与此匹配的其他问题。所有我能找到涉及有2个日期列进行比较。如果之前确实已经回答了,我为创建重复帖子而道歉。MS SQL查找期限一个日期只属于给定期限开始日期

我一直在考虑一个表3列:

Period (int) - Name (varchar) - StartDate (datetime) 
1 Period 1 2016-01-04 00:00:00.000 
2 Period 2 2016-02-01 00:00:00.000 
3 Period 3 2016-02-29 00:00:00.000 
4 Period 4 2016-03-28 00:00:00.000 
5 Period 5 2016-04-25 00:00:00.000 
6 Period 6 2016-05-23 00:00:00.000 

我很遗憾没有改变表添加第二个日期列包含各个时期的结束日期的选项。每个期间的结束日期都是紧接列出的StartDate之前的日期。

我会通过一个日期,需要找到日期所属的时间段。

任何人都可以提供一些方向?

+1

所以你想选择比你的日期参数少的最高日期?这足够暗示了吗?最热门的日期? –

+0

*脸掌*感谢您选择Alleman。 – Don

回答

1

鉴于从标签Alleman按照上面的提示/评论,我建立了以下内容:

select top 1 period from PeriodDetail 
where StartDate <= getdate() 
order by startdate desc 

由于GETDATE(此时)返回2016年2月19日,正确的结果是期间2.

谢谢大家。

2

尝试此查询:

SELECT TOP 1 * 
FROM Table 
WHERE StartDate >= @GivenDate 
ORDER BY StartDate 
相关问题