MS SQL - 查找期间日期属于给定的期间开始日期

时间:2016-02-19 20:44:47

标签: sql-server-2012

长期读者,第一次海报。 我做了搜索,找不到与之匹配的任何其他问题。所有我能找到的涉及2个日期列进行比较。如果之前确实已经回答过,我为创建重复的帖子而道歉。

我得到了一个包含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之前的日期。

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

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

2 个答案:

答案 0 :(得分:2)

尝试此查询:

SELECT TOP 1 *
FROM Table
WHERE StartDate >= @GivenDate
ORDER BY StartDate

答案 1 :(得分:1)

鉴于Tab Alleman的提示/评论,我构建了以下内容:

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

由于GetDate(此刻)返回2016年2月19日,正确的结果是第2期。

谢谢大家。